javascript - Backbone .js。正确设置更改事件

标签 javascript backbone.js backbone-views

我正在使用 Backbone.js 编写 Todo 应用程序

您可以在下面看到我的部分代码。 型号:

 var Todo = Backbone.Model.extend({
    defaults : {
        title: 'Task Title',
        complete: false
    },
    initialize: function(){
        this.on("change:complete", function () {
            alert("foo");
        });
    }
});

查看:

var AppView = Backbone.View.extend({
        collection: todoCollection,
        el: 'body',
        events: {
            'click #tasks li .complete-task' : 'toggleComplete'
        }
        toggleComplete: function (e) {
            var modelCid = $(e.target).parent('li').attr('id');

             if ( this.collection.get(modelCid)['complete'] ){
                this.collection.get(modelCid)['complete'] = false;
             } else {
                 this.collection.get(modelCid)['complete'] = true;
             };
        }
    });

但是模型中出现问题并且更改事件不起作用。我不明白我哪里有错误。 请帮帮我。 10q。

最佳答案

根据主干 Documentation :

设置 model.set(属性,[选项])

Set a hash of attributes (one or many) on the model. If any of the attributes change the model's state, a "change" event will be triggered on the model. Change events for specific attributes are also triggered, and you can bind to those as well, for example: change:title, and change:content. You may also pass individual keys and values.

因此,您需要在模型上使用 set 方法才能触发这些事件。所以你需要使用这样的东西:

this.collection.get(modelCid).set('complete',false);

关于javascript - Backbone .js。正确设置更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125772/

相关文章:

javascript - Backbone + RequireJS : Making Collection Persisting?

javascript - 主干 View 默认 $el

javascript - 如何在 BackboneJS 应用程序中创建并打开警报对话框

backbone.js - 主干 View 、初始化和渲染

javascript - 将样式 "cursor: pointer"应用于所有具有 onClick 功能的 React 组件

javascript - 从YouTube用户名获取YouTube个人资料图标

javascript - 将 javascript 作为现值放入表单中

javascript - 如何更新集合中的所有模型 - Backbone.js

javascript - 当我在呈现 View 后设置输入类型的值时,为什么不触发输入类型的更改事件?

javascript - 我可以将一个 javascript 请求重定向到另一个 javascript 操作吗?