如何更改所有骨干模型属性

时间:2014-08-15 04:19:32

标签: javascript backbone.js

我是Backbone的新手,请帮我解决这个问题。

我的模型看起来像这样:

var optionItem = Backbone.Model.extend({});
var itemOne = new optionItem({price: 200});
var itemTwo = new optionItem({price: 300});
var itemThree = new optionItem({price: 400});

My Collection看起来像这样:

var optionClass = Backbone.Collection.extend({});  
var firstOptionClass = new optionClass([itemOne, itemTwo, itemThree]);

要求是创建3个单选按钮,并显示所有3个项目的价格。当用户点击任何单选按钮时,所选项目价格将更改为"包含在价格"中,其他2个项目将显示价格差异。例如,如果我点击itemOne,itemTwo将有价格" + 100"而不是显示300。

我知道如何为模型和集合创建视图以显示原始信息,但不知道如何编写click事件函数...目前我在模型视图中有事件功能,但无法访问另一个2模型price属性执行数学,我应该将事件函数移动到集合视图吗?

请帮助,提前谢谢!!!!

2 个答案:

答案 0 :(得分:0)

单击偶数功能应该在Backbone.View

因为您需要访问多个模型才能获得价格。您的事件函数也应该在Backbone.View控制器而不是Model Class。

希望它有所帮助,

答案 1 :(得分:0)

有几种方法可以解决这个问题,但要记住的一件事是每个模型都维护对它所属的集合的引用。因此,在您看来,this.model具有this.model.collection属性,您可以根据需要使用该属性来访问该集合。也就是说,我可能会使用集合视图来处理集合相关信息的显示,以防止项目视图违反single responsibility principle当选择其中一个选项时,让所选模型触发事件。模型事件会冒泡到集合中,您可以让集合视图在集合上侦听该事件,以更新其他选项的“差异”值。