将模型添加到木偶项视图定义之外的主干集合

Add models to backbone collection outside Marionette ItemView definition

本文关键字:集合 定义 视图 添加 模型      更新时间:2023-09-26

我有两个在div 中呈现的主干集合,如下所示:

<html>
    <body>
        <div id="one">
            <-- Collection c1 rendered by Marionette ItemView App.V1 here -->
        </diV>
        <div id="two">
            <-- Collection c2 rendered by Marionette ItemView App.V2 here -->
        </div>
    </body>
</html>

现在我想将模型添加到集合c1(和c2),但我只知道div id - #one#two,因为App.V1App.V2是这样渲染的:

var App = new Marionette.Application();
App.addRegions= {
one: "#one",
two: "#two"
}
function r()
{
var c1= new C110;
c1.fetch();
var c2= new C220;
c2.fetch();
App.one.show(new App.V1({collection: c1});
App.two.show(new App.V2({collection: c2});
}

其中App是全局木偶对象; one 是由div #one 定义的区域,two 是由div #two 定义的区域。

我的问题是 - 我怎样才能在App.V1App.V2r()的定义之外获得集合c1c2,并向它们添加一些模型(如果我再次调用r(),我会创建新的c1'sc2's以便c1.add(...)c2.add(....)变得无用)?

事实证明,全局木偶对象App保存对所有视图(当前在 DOM 中处于活动状态)及其各自集合的引用。

因此,在上述情况下,可以像这样访问c1App.one.currentView.collection
类似地,c2可以像这样访问:App.two.currentView.collection
(请记住,onetwo是由App定义的木偶区域的名称,而不是html div ids的名称)