2013-04-13 104 views
0

我正在嘗試設置控制器ember.js控制器屬性

的屬性試圖這樣做

{{view Ember.Select contentBinding="App.tastingsController.names"}} 

它不工作

App.tastingsController = Ember.ArrayController.extend 
    names: ["Velato", "Abbastanza limpido", "Limpido", "Cristallino", "Brillante"] 

,而這個版本是工作正確(但給出此警告:WARNING: The immediate parent route did not render into the main outlet and the default 'into' option may not be expected

App.tastingsController.names = ["Velato", "Abbastanza limpido", "Limpido", "Cristallino", "Brillante"] 

這裏是我的路線:

App.Router.map -> 
    @route "home", { path: "/" } 
    @route "about" 
    @resource "tastings", -> 
    @route "new" 
    @resource "tasting", { path: ":tasting_id"} 

你能解釋我爲什麼?

(發現here

謝謝

馬爾科

回答

0

有你的代碼的幾個問題:

  • App.tastingsController應該被命名爲App.TastingsController。控制器類應該以大寫字母開頭。

  • 由於您跳過了路由層次結構中的模板,因此您將收到警告。我需要更多路線信息來幫助解決這個問題。

  • 如果需要設置控制器上的屬性(如你的情況names),有兩種方法可以做到這一點:

    將它設置在路線:

    App.TastingsRoute = Ember.Route.extend({ 
        setupController: function(controller, model) { 
        controller.set('names', names: ['list', 'of', 'names']); 
        } 
    }); 
    

    App.TastingsController = Ember.ArrayController.extend({ 
        content: [], 
        names: ['list', 'of', 'names'] 
    }); 
    
  • 當你需要從視圖/模板引用控制器,這樣做:或者,您可以定義控制器類時直接設置它不命名整個控制器類。只需使用你要綁定屬性(假設你的視圖的控制器是App.TastingsController

{{view Ember.Select contentBinding="names"}}

希望這有助於。

+0

更新了路線。 嘗試控制器選項,它給了我:'未捕獲的錯誤:斷言失敗:無法在未定義的對象上調用'長度'獲取。 –

+0

這取決於您使用select的模板。如果在'tastings'模板中,然後將名稱放在'App.TastingsController'中,如果您在'tastings/new'模板中使用它,那麼它應該放在'App.TastingsNewController'中。 –

+0

看到路由後,我可以猜測你得到'WARNING'是因爲你跳過了定義'tastings'模板,只需添加:''並且警告應該消失。 –

相關問題