2014-08-31 26 views
1

我是Ember的新手,我試圖設置一個顯示外部模型(產品)信息的模板。所以,我有一個管理路線:Ember在路線中定義模型導致錯誤

App.AdminRoute = Ember.Route.extend({ 
    model: function() { 
     var admin_brand = this.store.find('brand', 1); 
     return this.store.find('product', {brand: admin_brand}); 
    } 
}); 

控制:

App.AdminController = Ember.ArrayController.extend({ 

}); 

和模板:

<script type="text/x-handlebars" data-template-name="admin"> 
    <div class="row"> 
     {{#each}} 
      {{name}} 
     {{/each}} 
    </div> 
</script> 

但我發現了一個JS錯誤:

Error while processing route: admin undefined is not a function TypeError: undefined is not a function 

我'm也使用ember-data-django-rest-adapter我的實際數據(這似乎工作正常否則)。如果我在路由中傳遞一個靜態的對象數組,它可以正常工作。任何想法,我做錯了什麼?另外,這是甚至正確的方式去做這件事?最後,有沒有更好的方法來調試這些類型的問題?我有Chrome擴展,但它似乎沒有幫助這些極端通用的錯誤,所以任何其他技巧將是非常棒的。非常感謝您的幫助。

回答

1

假設你正在使用的餘燼數據...

的問題是,調用this.store.find('brand', 1)返回一個承諾,而不是一個值。爲了使用this.store.find('product', {brand: admin_brand})調用中的值,您需要使用.then()來訪問已解析的值。

這樣的事情應該工作。

App.AdminRoute = Ember.Route.extend({ 
    model: function() { 
     var self = this; 
     return self.store.find('brand', 1).then(function(admin_brand){ 
      return self.store.find('product', {brand: admin_brand}) 
     }); 
    } 
}); 
+0

謝謝你,這絕對是更有意義的這種方式,但不幸的是我仍然遇到一個錯誤(無論如何一個新的)。 '處理路由時出錯:admin無法讀取未定義TypeError的屬性'find':無法讀取find('product')屬性'find'。在這種情況下,我是否需要在控制器或模板中執行特定的任何操作?經過更多的挖掘,我認爲可能有其他一些問題導致問題(看着餘燼調試器,我的產品對象並不總是存在,但在訪問產品/ 1後,他們確實被添加到調試器中) – tcmurphy 2014-09-01 16:19:56

+1

該問題是一個範圍問題。我將代碼固定在使用'self'而不是'this'的答案中。試一試上面的代碼,看看它是否有效。 – tikotzky 2014-09-01 16:36:28

+0

啊,是的,這也是有道理的,不幸的是我得到一個新的錯誤:'處理路由時出錯:admin超過最大調用堆棧大小RangeError:超過最大調用堆棧大小 在encodeURIComponent(本地)' – tcmurphy 2014-09-01 16:48:20

相關問題