2013-01-21 61 views
9

我想要做一些進度條,這將由燼控制。所以,在我的眼裏,有兩年半的方式來實現這一目標:從視圖內訪問控制器的屬性

  1. 已經在控制器,這臺觀察者的元素觸發時width。問題:AFAIK,無法訪問控制器內的DOM元素,即像在視圖this.$('#progress')中那樣操作DOM元素。

  2. 在觀察控制器屬性的視圖中有觀察者。問題:我不知道,如何觀察(和訪問)控制器的屬性。

  3. (經由{{bindAttr}}控制器的屬性綁定到一個奇特的data-progress="42"屬性和調整元件width每當該屬性的值已改變)

回答

13

選項2是最好的選擇。

問題:我不知道,如何觀察(和訪問)控制器的屬性。

Ember將在創建視圖時設置視圖的控制器屬性,您可以使用它來訪問控制器的屬性。

App = Ember.Application.create(); 

App.ApplicationController = Ember.Controller.extend({ 
    percentComplete: '0' 
}); 

App.ProgressView = Ember.View.extend({ 
    percentChanged: function() { 
    percentString = (this.get('controller.percentComplete') + "%"); 
    this.$('.bar').css('width', percentString); 
    }.observes('controller.percentComplete').on('didInsertElement') 
}); 

我已工作的例子在這裏:http://jsbin.com/hitacomu/1/edit

+6

控制器是一個觀點? – iConnor

+0

I 2nd @ Connor的評論。我很困惑的是,燼似乎更關心名稱,而不是類型,更多地關注其魔法的物體。此外,jsbin鏈接目前似乎沒有做任何事情。 –

+1

@PatrickM對不起,這是一個錯字,應該是'App.ProgressController = Ember.Controller.extend'。 jsfiddle也導致它引用了已移動的js庫。我已經更新了小提琴和我的答案,希望新版本更有幫助。 –

相關問題