2013-08-15 3 views
1

어디에서 예를 들어 계산 직원 급여에 대한 몇 가지 계산을 넣을 수 있습니까? 필요한 외부 파일을 사용해야합니까, 아니면 모델이나 컬렉션 또는 뷰를 사용할 수 있습니까?Backbonejs - 계산은 어디에 두는가?

+0

'모델' – Henry

답변

2

모델의 속성은 데이터 엔터티 (Employee)의 상태를 나타냅니다. 그 메소드는 데이터 엔티티의 상태를 변경해야합니다. 따라서 모델 calculateSalary()의 방법은 salary 속성 (증가, 감소, 계산 등)으로 작동하는 좋은 선택이 될 수 있습니다.

OOP에서 일반적인 접근 방식입니다. speed = 0이있는 Car 클래스가있는 경우 run() 메서드를 호출하여 speed을 증가시킬 수 있습니다 (상태 변경). 직원 및 그/그녀의 salary과 같은 아이디어.

var Person = Backbone.Model.extend(); 

var Employee = Person.extend({ 
    defaults: { 
     hoursWorked: 0, 
     hourlyRate: 0, 
     salary: 0 
    }, 
    initialize: function() { 
     Person.prototype.initialize.apply(this, arguments); 
     this.on('change:hoursWorked change:hourlyRate', this.calculateSalary); 
     this.calculateSalary(); 
    }, 
    calculateSalary: function() { 
     this.set('salary', this.get('hoursWorked') * this.get('hourlyRate')); 
    } 
}); 

var driver = new Employee({ 
    hoursWorked: 10, 
    hourlyRate: 15 
}); 

console.log(driver.get('salary')); // 150 

driver.set('hourlyRate', 25); 
console.log(driver.get('salary')); // 250 

driver.set('hoursWorked', 20); 
console.log(driver.get('salary')); // 500