Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干-除了一个属性外,是否可以将更改事件绑定到模型?_Javascript_Backbone.js_Javascript Framework - Fatal编程技术网

Javascript 主干-除了一个属性外,是否可以将更改事件绑定到模型?

Javascript 主干-除了一个属性外,是否可以将更改事件绑定到模型?,javascript,backbone.js,javascript-framework,Javascript,Backbone.js,Javascript Framework,我希望在任何时候更改模型的任何属性(除了一个属性)时触发更改事件。这可能吗?除了做: model.bind('change:prop1', func); model.bind('change:prop2', func); model.bind('change:prop3', func); etc.... 或者,是否有一种方法可以从事件处理程序中找出触发更改的属性?您可以使用model.bind('change',function(){/*…*/})并在函数中检查属性:if(model.hasC

我希望在任何时候更改模型的任何属性(除了一个属性)时触发更改事件。这可能吗?除了做:

model.bind('change:prop1', func);
model.bind('change:prop2', func);
model.bind('change:prop3', func);
etc....

或者,是否有一种方法可以从事件处理程序中找出触发更改的属性?

您可以使用
model.bind('change',function(){/*…*/})
并在函数中检查属性:
if(model.hasChanged('propIWantToExclude')return

响应David Tuite回答问题第一部分的请求,您可以设置一个函数来响应“已更改”事件,然后在要忽略的属性未更改时触发自定义事件

如果属性未更改,此逻辑将触发自定义事件:
“PropiwantToExcludeChanged以外的某些属性”
。如果更改了多个属性(包括要忽略的属性),则自定义事件也不会触发:

model.bind('change', function(){
    if( !model.hasChanged('propIWantToExclude') ){
        model.trigger('somePropertyOtherThanThePropIWantToExcludeChanged');
    }
});

当“propIWantToExclude”和其他一些属性一起更改时,Justin将返回上面的答案。您可能不想这样做,因此还应该查看
模型的大小。changedAttributes

if(model.changedAttributes.length == 1 && model.hasChanged('attrIWantToExclude')) {
    return;
}

有人能回答问题的第一部分吗?例如,当我更改模型的任何属性时,如何触发更改事件,只有一个属性除外?^只需使用响应中的“更改”即可。。。虽然我看到它被编辑过,所以在编辑之前您可能会问:)应该是:“model.hasChanged('attrIWantToExclude')&&Object.keys(model.changedAttributes())。length==1”。或者“Object.keys(model.changed).length==1&&…”。changedAttributes是一个函数,它返回已更改对象的哈希值,如果没有,则返回false。hash.length不起作用,所以您需要这样的内容:Object.keys(hash.length)。changedAttributes和Object.keys(false)错误可返回false,因此在changedAttributes上的Object.keys引用(或引用internal model.changed)之前需要进行hasChanged测试大卫·图伊特是谁?“问题的第一部分”是什么?