2013-07-24 102 views
0

財產「應用」我有一個複合視圖:遺漏的類型錯誤:無法讀取的不確定

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

我只是要分配給此視圖的應用程序屬性ItemView控件的應用程序性能。所以我可以從其他視圖使用這個視圖的應用程序。但我得到這個錯誤:Uncaught TypeError:無法讀取未定義的屬性「應用程序」。我究竟做錯了什麼?爲了做到這一點,還有另一種方法嗎?

+0

你想通過構造函數傳遞應用程序變量?這在聲明這種方式時引用了{}對象 – Blacksonic

回答

0

possiblelity#1: 當您的代碼執行時,this.option尚未設置。

可能性#2: 也許'這個'不是你所期望的。 指定var that = this; 之前,並使用'that'而不是'this'。

或assign var _options = this.options;在extend()之前並在擴展中使用_options。

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

您不能訪問之類的model從選項的參數,但是它們會自動連接到您的視圖

相關問題