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
Backbone.js:fetch({add:true}),触发更改事件?_Backbone.js - Fatal编程技术网

Backbone.js:fetch({add:true}),触发更改事件?

Backbone.js:fetch({add:true}),触发更改事件?,backbone.js,Backbone.js,我想知道在将add:true传递到fetch时,是否有任何方法可以获得更改的模型。它呈现集合中的所有新模型,但我也想知道是否有任何模型发生了更改 这可能吗 我还考虑了将不同的函数作为成功处理程序传递给fetch,该函数将只重新呈现视图的某些部分,而不是整个视图。您可以绑定到“add”事件并触发一个只更新视图一部分的方法。为了重新呈现视图,必须显式绑定集合事件。换句话说,您可以控制视图的哪些部分应该被渲染。您是否可以根据集合“更改”事件更改呈现视图的函数 每个模型都有一个方法isNew(),和ha

我想知道在将
add:true
传递到
fetch
时,是否有任何方法可以获得更改的模型。它呈现集合中的所有新模型,但我也想知道是否有任何模型发生了更改

这可能吗

我还考虑了将不同的函数作为成功处理程序传递给
fetch
,该函数将只重新呈现视图的某些部分,而不是整个视图。

您可以绑定到“add”事件并触发一个只更新视图一部分的方法。为了重新呈现视图,必须显式绑定集合事件。换句话说,您可以控制视图的哪些部分应该被渲染。您是否可以根据集合“更改”事件更改呈现视图的函数

每个模型都有一个方法isNew(),和hasChanged()。您可以在集合中循环查看哪些模型已更改。如果有更简单、更熟练的方法来做这件事,我洗耳恭听

也许您可以发布一些代码,以便我们能够准确地看到您正在做什么?

您可以绑定到“添加”事件并触发一个只更新部分视图的方法。为了重新呈现视图,必须显式绑定集合事件。换句话说,您可以控制视图的哪些部分应该被渲染。您是否可以根据集合“更改”事件更改呈现视图的函数

每个模型都有一个方法isNew(),和hasChanged()。您可以在集合中循环查看哪些模型已更改。如果有更简单、更熟练的方法来做这件事,我洗耳恭听


也许您可以发布一些代码,以便我们能够准确地看到您正在做什么?

通常的模式是有一个视图来渲染您的模型。然后你:

  • 在集合视图中订阅集合的
    add
    事件,以便附加添加模型的视图
  • 让模型的视图订阅模型的
    更改
    以重新渲染
如果仍希望只有一个视图,请执行以下操作: -订阅集合的
add
事件,以便附加到视图中。
-订阅集合的
change
事件并更新部分视图。

通常的模式是拥有一个渲染模型的视图。然后你:

  • 在集合视图中订阅集合的
    add
    事件,以便附加添加模型的视图
  • 让模型的视图订阅模型的
    更改
    以重新渲染
如果仍希望只有一个视图,请执行以下操作: -订阅集合的
add
事件,以便附加到视图中。
-订阅集合的
change
事件并更新视图的部分。

从0.9.10版开始,您应该使用
{update:true}
而不是
{add:true}
。这将告诉集合为每个已更改的模型触发一个
change
事件。(请注意,
change
事件是在集合上触发的,而不是在模型上触发的)

如果希望集合添加和更新模型,但不删除模型,可以这样完成:

myCollection.fetch({update:true, remove:false});

.

从0.9.10版开始,您应该使用
{update:true}
而不是
{add:true}
。这将告诉集合为每个已更改的模型触发一个
change
事件。(请注意,
change
事件是在集合上触发的,而不是在模型上触发的)

如果希望集合添加和更新模型,但不删除模型,可以这样完成:

myCollection.fetch({update:true, remove:false});

.

唯一的问题是,当调用
fetch({add:true})
时,当前模型不会更新。如果我调用
fetch
whout
add:true
,所有视图都将被重新呈现,我不想要它。如果我调用
fetch
,则会触发
reset
事件,并且我无法基于
change
事件更改函数。我可以发布一些代码,其中包含收集的数据示例和从服务器获取的数据。模型已更新(无需重新呈现所有视图)如果调用
fetch({silent:true})
,则不会触发任何事件。但是!我可以这样做,并传递一个成功处理程序并触发事件绑定到“add”时会发生什么事件?我猜它不会触发,因为您说集合保持不变。您确定从服务器获取的数据在集合中不存在或Id冲突吗?唯一的问题是调用
fetch({add:true})时
当前模型未更新。如果我调用
fetch
而不调用
add:true
,则所有视图都将重新呈现,我不需要它。如果我调用
fetch
则触发
重置
事件,并且我无法基于
更改来更改函数
事件,我可以发布一些带有中数据示例的代码您的集合和从服务器获取的数据。如果我调用
fetch({silent:true})
,将更新模型(而不重新呈现所有视图),但是这不会触发任何事件。但是!我可以这样做,并传递一个成功处理程序并触发事件绑定到“添加”时会发生什么事件?我猜它不会触发,因为你说集合保持不变。你确定你从服务器获取的数据在集合中不存在或Id冲突吗?我决定使用集合视图和模型视图。问题不是你真正回答的问题。我知道更改事件。我会举个例子:一个团队项目管理应用程序,我加载任务的视图,然后你更改一个任务的详细信息。现在,我想更新已经渲染的视图(谈论