我的App.addInitializer
App.addInitializer(function () {
// Collection Map for dynamic slide-in menus
var map = {
'groups': {
'view': GroupsCollectionView,
'collection': GroupsCollection,
'title': "Choose Groups"
}
};
var menuModel = new MenuModel({
id: 'segments-are-cool',
mode: 'list'
}),
menuView = new MenuView({model: menuModel});
eventer.on('menu-open', function(type){
var collectionType = new map[type].collection,
viewType = new map[type].view({collection: collectionType}),
title = map[type].title;
menuView.model.set({type: type, title: title});
menuView.content.show(viewType);
});
App.menu.show(menuView);
});
出于某种原因,当我在模型上设置type
和title
时,当我的视图显示时,它们也不显示我设置它们(默认值显示)。< / p>
我是backbone.js
新手,所以我对我的无知道歉
答案 0 :(得分:0)
正如在评论中解释的coding_idiot,Backbone(与Angular不同)在View
更改时不会自动更新Model
。虽然这不太方便,但它可以让您更好地控制发生的事情。
一般来说,大多数Backbone开发人员(如coding_idiot建议的那样)只需在View.render
更改后调用Model
。您甚至可以通过View
方法this.model.listenTo('change', this.render);
调用initialize
来自动执行此操作。
或者您可以使用像Epoxy(http://epoxyjs.org/)这样的库来进一步自动化数据绑定,但我个人不推荐它只是因为我认为对什么时候和什么有精确控制有很多价值你重新渲染。