繁体   English   中英

未捕获的TypeError:无法读取未定义的属性“ app”

[英]Uncaught TypeError: Cannot read property 'app' of undefined

我有一个综合的观点:

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

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

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

可能性2:也许“这”不是您期望的那样。 分配= this的var; 之前并使用“ that”代替“ this”。

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

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

您无法从options参数访问model类的内容,但是它们会自动附加到您的视图中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM