Backbonejs - 我在哪里进行计算?

时间:2013-08-15 01:33:36

标签: javascript backbone.js

在哪里可以进行一些计算来计算员工薪水?是否需要使用外部文件或我可以使用模型或集合或视图?

1 个答案:

答案 0 :(得分:2)

模型的属性表示数据实体(Employee)的状态。它的方法应该改变数据实体的状态。所以模型calculateSalary()的方法可能是使用salary属性(增加,减少,计算等)操作的不错选择。

这是OOP中的常用方法。如果您的班次Car包含speed = 0,则可以调用其方法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