在 Marionette ItemView 定义之外将模型添加到 backbone 集合

Add models to backbone collection outside Marionette ItemView definition

我在 div 中呈现了两个 backbone 集合,如下所示:

<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是全局Marionette对象; one 是由 div #one 定义的区域,two 是由 div #two 定义的区域。

我的问题是 - 如何在 App.V1App.V2r() 的定义之外获取 Collection c1c2 并添加一些模型给他们(如果我再次调用 r(),我会创建新的 c1'sc2's 所以 c1.add(...)c2.add(....) 变得无用)?

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

所以,在上面的例子中,c1可以这样访问:App.one.currentView.collection
同样,c2可以这样访问:App.two.currentView.collection
(请记住,onetwo 是由 App 定义的 Marionette 区域的名称,而不是 html div ids 的名称)