gpt4 book ai didi

backbone.js - 如何从 Backbone Marionette 中的项目 View 实例访问复合 View

转载 作者:行者123 更新时间:2023-12-03 09:24:31 27 4
gpt4 key购买 nike

基本情况是这样的:

我有一个复合 View 和一个项目 View 。我构造了复合 View ,并传递了一个模型和一个集合。模型数据用于填充复合 View 的模板。集合数据用于填充复合 View 的项目 View 。

我想要做的是:在项目 View 的模板助手中,我想访问复合 View 的模型数据。我已经访问了项目 View 的 View 实例。我认为这可能会让我了解复合 View ,从那里我可以找到它的模型,但事实并非如此。

有没有办法做到这一点 - 从其项目 View 实例之一访问复合 View 实例?

谢谢

——贾斯汀·威利

最佳答案

如果要从父级访问数据 CompositeView你可以做很多不同的事情。

  • 要么将该数据直接传递给 ItemView通过 itemViewOptions CompositeView 上的辅助函数.注意:此选项已更改为 childViewOptions在 Marionette 2。
  • CompositeView 直接在所有 subview 上调用方法并将您想要的任何内容传递给该方法。
  • 触发事件或由 ItemView 监听.

  • 这些选项都不是直接从 subview 访问父 View ,但应该做你想做的。下面是如何使用这些方法中的每一种来传递 CompositeView 的代码。的模型给 children 看。
    // Pass model into ItemView on init
    var MyItemView = Backbone.Marionette.ItemView.extend({
    initialize : function (options) {
    this.parentsModel = options.parentsModel;
    }
    });
    var MyCompView = Backbone.Marionette.CompositeView.extend({
    itemViewOptions : function () { return { parentsModel: this.model }; }
    itemView : MyItemView
    });


    // Invoke function on ItemView, passing data in
    var MyItemView = Backbone.Marionette.ItemView.extend({
    doSomethingWithParent : function (parentModel) {
    // do cool thing with parentModel
    }
    });
    var MyCompView = Backbone.Marionette.CompositeView.extend({
    itemView : MyItemView,
    onRender : function () {
    this.children.call("doSomethingWithParent", this.model);
    }
    });


    // Trigger event that ItemView knows about
    var MyItemView = Backbone.Marionette.ItemView.extend({
    initialize : function () {
    this.listenTo(this, "special:event", function (parentModel) {
    // Do cool things
    });
    }
    });
    var MyCompView = Backbone.Marionette.CompositeView.extend({
    itemView : MyItemView,
    onRender : function () {
    this.children.each(_.bind(function (childView) {
    childView.trigger("special:event", this.model);
    }, this));
    }
    });

    关于backbone.js - 如何从 Backbone Marionette 中的项目 View 实例访问复合 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572509/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com