未捕获类型错误:无法读取未定义的属性“app”

问题描述 投票:0回答:3

我有一个综合视图:

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

我只想将此视图的应用程序属性分配给itemView的应用程序属性。所以我可以从其他视图使用此视图的应用程序。但我收到此错误:未捕获类型错误:无法读取未定义的属性“app”。我究竟做错了什么?还有其他方法可以做到这一点吗?

javascript backbone.js view marionette
3个回答
0
投票

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

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

或者赋值 var _options = this.options;在extend()之前并在extend中使用_options。


0
投票

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

之外的所有内容
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
) 本身。

您无法从选项参数中访问诸如

model
之类的内容,但它们会自动附加到您的视图中


-2
投票

兄弟,过去三天我也在为这个错误而苦苦挣扎,我不知道为什么以及这是什么狗屎

© www.soinside.com 2019 - 2024. All rights reserved.