1

我有一个复合视图:

var resultView = Marionette.CompositeView.extend({
        template : ResultPanel,
        itemView : ResultItemView,
        initialize : function() {
            ...
        },
        itemViewOptions : {
            app : this.options.app
        },

我只想将此视图的 app 属性分配给 itemView 的 app 属性。所以我可以从其他视图使用这个视图的应用程序。但是我收到了这个错误:Uncaught TypeError: Cannot read property 'app' of undefined。我究竟做错了什么?还有其他方法可以做到这一点吗?

4

2 回答 2

0

可能性 #1: this.option 在您的代码执行时尚未设置。

可能性#2:也许“这”不是你所期望的。分配 var that = this; 之前并使用“那个”而不是“这个”。

或分配 var _options = this.options; 在extend() 之前并在extend 中使用_options。

于 2013-07-24T07:27:25.993 回答
0

options将从您提供给视图构造函数的对象生成。它包括除了modelcollection

var rv = new resultView({model: something, app: something})

然后可以像这样访问

var resultView = Marionette.CompositeView.extend({
        itemView : ResultItemView,
        initialize : function(options) {
             this.app = options.something;    
        },
        itemViewOptions : {
            app : this.options.app
        },

如果您想在其他方法中引用这些选项,则需要将所需的变量附加到视图 ( this) 本身。

您无法访问诸如modelfrom 选项参数之类的内容,但是它们会自动附加到您的视图中

于 2013-07-25T01:36:37.613 回答