我有一个骨干视图(ItemDetailedView)哪个容器另一个视图(ShopItemDetailedView)。在ShopItemDetailed视图中,我有一个img,点击它时需要更新ItemDetailed模型。换句话说,它需要在ItemDetailed模型上调用fetch。我如何在ShopItemDetailed上执行此操作?我正在考虑将商品模型传递给商店模型,然后设置商品的ID。但是我不认为这是一个很好的解决方案,因为它违背了解耦原则。这是我的ShopItemDetailedView
上的一些代码 loadNewItem: function(itemid) {
//i want to change set the item id here that is on ItemDetailedView
},
我在考虑发布者和订阅者方法,这样在这个事件中我会发布一个事件来发送它应该获取的项目的新id。不确定如何做到这一点
答案 0 :(得分:1)
这是未经测试的,但您应该能够做到这样的事情:
window.EVENT_BUS = {};
_.extend(EVENT_BUS, Backbone.Events);
// inside ShopItemDetailed click handler
EVENT_BUS.trigger('ShopItemDetailedClick', {id: 'foo'});
// inside ItemDetailedView initialize
EVENT_BUS.on('ShopItemDetailedClick', function (args) {
console.log('do something with ', args.id);
});
答案 1 :(得分:0)
此外,如果ShopItemDetailedView
具有订阅者角色且ItemDetailedView
将具有观察者角色,则可以触发视图事件:
loadNewItem: function(itemid) {
this.trigger('itemShop');
}
订阅ItemDetailedView
到ShopItemDetailedView
的itemShop活动
ItemDetailedView = Backbone.View.extend({
initialize : function() {
shopItemDetailedViewInstance.on('itemShop', this.itemShop);
},
itemShop : function(){
//your observer code here
}
});