Backbone.js:更新事件内的模型属性不会持久存在

时间:2014-07-02 01:49:35

标签: javascript backbone.js

我的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);
});

出于某种原因,当我在模型上设置typetitle时,当我的视图显示时,它们也不显示我设置它们(默认值显示)。< / p>

我是backbone.js新手,所以我对我的无知道歉

1 个答案:

答案 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/)这样的库来进一步自动化数据绑定,但我个人不推荐它只是因为我认为对什么时候和什么有精确控制有很多价值你重新渲染。