首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Marionette.CompositeView和Marionette.ItemView之间的事件

Marionette.CompositeView和Marionette.ItemView之间的事件
EN

Stack Overflow用户
提问于 2012-07-03 14:15:29
回答 1查看 2K关注 0票数 1

我有两个模块itemView.jsListView.js

当我获取数据时,一切都正常。

当我改变相应的模型时,问题是关于item view (1)。

( a) ListView.js (2)显示模型的closed值等于false (3)的所有对象

( b) (1)中的动作closeTask改变了模型的值

closed: falseclosed: true

( c)当b)发生任何变化时,

但是,如果我重新加载页面,就会得到正确的结果(没有显示closed值等于true的模型)。

我该如何解决这个问题?

(1)

代码语言:javascript
复制
// itemView.js
var itemView = Marionette.ItemView.extend({

    initialize: function () {
        this.model.on('change', this.render, this);
    },

    events: {
        'click #close': 'closeTask'
    },

    template: itemTemplate,

    tagName: 'li',

    closeTask: function () {
        if (!this.model.get('closed')) {
            this.model.save({
                closed: true
            });
        }
    }

});

(2)

代码语言:javascript
复制
// ListView.js
var ListView = Marionette.CompositeView.extend({

    template: listTemplate,

    itemView: itemView

});

(3)

代码语言:javascript
复制
// Collection
myCollection.attributes = [
    {
        id: 1,
        name: 'bar'
        closed: false
    },
    {
        id: 2,
        name: 'bar2'
        closed: false
    },
    ….
];

P.S.:

当我获取集合时,服务器只提供具有等于false的封闭属性的模型。

代码语言:javascript
复制
app.addInitializer(function () {
    myCollection = new MyCollection();
    myCollection.fetch();
});
EN

回答 1

Stack Overflow用户

发布于 2012-07-03 14:43:28

我没有和Marionette一起工作,但是我一直在和骨干一起工作,我的想法是Marionette没有刷新模板或者类似的东西。

如果你尝试这个会发生什么?

代码语言:javascript
复制
// itemView.js
var itemView = Marionette.ItemView.extend({

    initialize: function () {
        this.model.on('change', this.render, this);
    },

    onRender : function(){
       //verify your model:
       console.log( this.model.toJSON() );
       if (this.model.get('closed')) {
          this.$el.fadeOut();//bye bye item
       }
    },

    events: {
        'click #close': 'closeTask'
    },

    template: itemTemplate,

    tagName: 'li',

    closeTask: function () {
        if (!this.model.get('closed')) {
            this.model.save({
                closed: true
            });
        }
    }

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11312846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档