遗漏的类型错误:无法读取的未定义的属性“应用”(Uncaught TypeError: Cannot

2019-10-18 09:53发布

我有一个复合视图:

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

我只是要分配给此视图的应用程序属性ItemView控件的应用程序性能。 因此,我可以使用该视图的应用程序从其他视图。 但我发现了这个错误:遗漏的类型错误:无法未定义读取属性“应用”。 我究竟做错了什么? 是否有为了做到这一点的另一种方式?

Answer 1:

方法可行#1:this.option你的代码执行时,尚未设置。

可能性2:也许“这个”是不是你希望它是什么。 分配该变种=此; 使用前和使用的“说”,而不是“本”。

或分配VAR _options = this.options; 前延伸(),并使用在延伸_options。



Answer 2:

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 )本身。

您不能访问之类的model从选项的参数,但是它们会自动连接到您的看法



文章来源: Uncaught TypeError: Cannot read property 'app' of undefined