Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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 主干提线木偶:合成视图替换项目,而不是附加项目_Backbone.js_Marionette - Fatal编程技术网

Backbone.js 主干提线木偶:合成视图替换项目,而不是附加项目

Backbone.js 主干提线木偶:合成视图替换项目,而不是附加项目,backbone.js,marionette,Backbone.js,Marionette,我有一个木偶CompositeView,我用它来填充下拉列表。当我从CompositeView中调用collection.fetch()时,JSON响应是干净的,但是CompositeView似乎在DOM中取代了新的ItemView,而不是附加新的ItemView 这是我的代码(咖啡脚本): 以及调用获取的父布局: class @IndexLayout extends Backbone.Marionette.Layout initialize: -> @collec

我有一个木偶
CompositeView
,我用它来填充下拉列表。当我从CompositeView中调用
collection.fetch()
时,JSON响应是干净的,但是CompositeView似乎在DOM中取代了新的ItemView,而不是附加新的ItemView

这是我的代码(咖啡脚本):

以及调用
获取
的父布局:

class @IndexLayout extends Backbone.Marionette.Layout
    initialize: ->
        @collections = new PDCollectionsCollection
        @collectionsView = new PDCollectionsView
            collection: @collections

    onRender: ->
        @collectionSelect.show @collectionsView

        @collections.fetch
            success: (collection, response, options) =>
                Connectors.App.vent.trigger "connections:collectionsLoaded"
                Connectors.App.vent.trigger "loadComplete"

            error: (collection, response, options) =>
                console.log response

我曾尝试使用
appendHTML
调用手动附加这些项,但我得到了相同的行为。我可以在
@PDCollectionsView
上通过调用
onafteritemsadded
来记录每个
项目视图
,并且项目视图是不同的;不同的CID和相应的型号。

我认为问题在于您使用主干网的
获取操作
fetch
“同步”集合及其在服务器上的状态。在不指定任何自定义项的情况下,它将智能地添加新项目、更新更改的项目以及删除服务器上不再存在的项目。我猜想,如果在调用fetch之后检查集合,您将看到它只包含正在CompositeView中呈现的项

通过传递
{remove:false}
,您可以修改
fetch
的行为以同步到服务器,而无需删除任何内容。这将产生您想要的结果:

    @collections.fetch
        remove: false

        success: (collection, response, options) =>
            Connectors.App.vent.trigger "connections:collectionsLoaded"
            Connectors.App.vent.trigger "loadComplete"

        error: (collection, response, options) =>
            console.log response

不幸的是,这并没有解决问题。添加
remove:false
对渲染没有影响,在获取完成后检查集合会显示添加了所有预期模型。
    @collections.fetch
        remove: false

        success: (collection, response, options) =>
            Connectors.App.vent.trigger "connections:collectionsLoaded"
            Connectors.App.vent.trigger "loadComplete"

        error: (collection, response, options) =>
            console.log response