2012-06-28 22 views
1

我得到「沒有方法」結果'backbone.marionette.js:402錯誤「。這裏的痕跡:在Marionettte /骨幹應用程序沒有方法錯誤

Uncaught TypeError: Object function (obj) { return new wrapper(obj); } has no method 'result' backbone.marionette.js:402 

Marionette.CollectionView.Marionette.View.extend.buildItemView backbone.marionette.js:402 
Marionette.CollectionView.Marionette.View.extend.addItemView backbone.marionette.js:360 
Marionette.CollectionView.Marionette.View.extend.showCollection backbone.marionette.js:314 

...

在backbone.marionette.js:

// Build an `itemView` for every model in the collection. 
buildItemView: function(item, ItemView){ 
var itemViewOptions = _.result(this, "itemViewOptions"); 
    ***Uncaught TypeError: Object function (obj) { return new wrapper(obj); } has no method 'result' *** 
var options = _.extend({model: item}, itemViewOptions); 
var view = new ItemView(options); 
return view; 
backbone. }, 

我的調用代碼:

MyApp.module("CatalogsApp.Pasteboard", function(Pasteboard, MyApp, Backbone, Marionette, $, _) { 
    var CatalogListView, CatalogView; 
    CatalogView = Marionette.ItemView.extend({ 
     tagName: "div", 
     className: "catalog-cell", 
     template: "catalogs/catalog" 
    }); 
    CatalogListView = Marionette.CollectionView.extend({ 
     tagName: "div", 
     className: "paste-board", 
     itemView: catalogView 
    }); 
    Pasteboard.showCatalogs = function(catalogList) { 
     var catalogListView; 
     catalogListView = new CatalogListView({ 
     collection: catalogList 
     }); 
     return MyApp.layout.main.show(catalogListView); 
    }; 
    }); 

如果任何人有任何線索什麼可能成爲問題在這裏導致類型錯誤 - 很好的想法。我幾乎在那裏我可以告訴。 catalogList集合看起來很好 - 從服務器填充。我知道這可能很難破譯,但也許有人對如何解決問題有一些想法。

回答

0

當您這樣做時,您正在覆蓋您的班級定義var catalogListView;

的約定是大寫的名字爲你的類定義是這樣的:

MyApp.module("CatalogsApp.Pasteboard", function(Pasteboard, MyApp, Backbone, Marionette, $, _) { 
    var CatalogListView, CatalogView; 
    CatalogView = Marionette.ItemView.extend({ 
     tagName: "div", 
     className: "catalog-cell", 
     template: "catalogs/catalog" 
    }); 
    CatalogListView = Marionette.CollectionView.extend({ 
     tagName: "div", 
     className: "paste-board", 
     itemView: CatalogView 
    }); 
    Pasteboard.showCatalogs = function(catalogList) { 
     var catalogListView; 
     catalogListView = new CatalogListView({ 
     collection: catalogList 
     }); 
     return MyApp.layout.main.show(catalogListView); 
    }; 
    }); 
+0

我必須道歉,因爲我實際上有我的代碼中的大寫(上面只是編輯)。由於客戶機密性,我必須查找/替換以更改變量名稱。當我這樣做時,我把帽子擰了。上面的代碼被糾正爲這樣,所以錯誤/問題仍然適用於此更新的代碼。 tx發現這一點。 – dnewman

+0

只需再糾正一次,在視圖實例化過程中,您仍然有'new catalogListView' – marcoo

+1

以及CollectionView類'itemView:catalogView' – marcoo

2

請確保您有最新的版本underscore.js。 '結果'功能被添加到v1.3.3

+0

這對我來說絕對是答案。 –