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 - Fatal编程技术网

Javascript 主干是否触发';改变';从本地文件加载数据时发生的事件?

Javascript 主干是否触发';改变';从本地文件加载数据时发生的事件?,javascript,backbone.js,Javascript,Backbone.js,我正在尝试使用以下代码测试主干集合的更改事件: var Item = Backbone.Model.extend({}); var ItemCollection = Backbone.Collection.extend({ model: Item, url: "data.json" }); var collection = new ItemCollection(); collection.bind("change", function() {cosole.log("collection

我正在尝试使用以下代码测试主干集合的更改事件:

var Item = Backbone.Model.extend({});
var ItemCollection = Backbone.Collection.extend({
  model: Item,
  url: "data.json"
});
var collection = new ItemCollection();
collection.bind("change", function() {cosole.log("collection changed.");});
collection.fetch();

然后我手动更改json文件并再次调用collection.fetch(),没有发生任何“更改”事件,是因为我使用了本地json文件还是.fetch方法无法触发“更改”事件?

因为获取集合调用重置方法,所以触发了一个
重置
事件

fetchcollection.fetch([options])
.... 当模型数据从服务器返回时,集合将重置

重置集合.重置(型号[选项])
... 使用“重置”将集合替换为新的模型列表(或属性哈希),在末尾触发单个“重置”事件。

如果在fetch方法中指定选项
{add:true}
,则会将模型添加到集合中,而不是替换它,因此会触发
add
事件



change
事件在模型更改时触发,因此基本上是在对模型调用方法
.set()
时触发的。

当集合属性之一更改时,“change”事件将触发。
尽管您自己更改了文件,但我在项目集合中找不到任何文件属性。您拥有的两个属性是模型对象和字符串。因此我猜这就是为什么不会触发“更改”事件的原因。

谢谢,因此更改事件主要用于客户端修改数据,从服务器更新数据时无法观察到,取回数据时需要设置重置处理程序,对吗?