2013-01-08 96 views
0

我是Ember的新手,我有一些問題和疑問。Ember js狀態處理

我使用此功能從單一的錶行

click: function(e) { 
    var element = $(e.target).closest("td"); 
    App.person = element.text().trim(); 
    var router; 
    router = this.get('controller.target.router'); 
    router.transitionTo('newRoute'); 
    } 

我已經綁定的變量Person文本字段獲得信息:

{{view Ember.TextField valueBinding="App.Person"}} 

當我點擊表格元素它將轉換爲newRoute並使用所選條目填充文本字段。但是當我再次點擊桌子時,什麼也沒有發生。

我想要的是動態更改文本字段的內容。

我希望有人能幫助我。

回答

1

如果您想要動態更改文本字段的內容,則不需要路由器轉換。如果將字段綁定到默認上下文(控制器)而不是使用像App.person這樣的全局變量,事情也會變得更加容易。

{{view Ember.TextField valueBinding="person"}} 

然後在點擊FX,您可以修改值:

click: function(e) { 
    text = this.get('controller.person'); 
    this.set('controller.person', text.trim(); 
} 

一些其他的事情需要注意的:

  • 儘可能避免全局引用,如App.person。框架應該讓你通過局部變量訪問你需要的所有東西。您通過點擊fx訪問控制器的方式就是一個例子,其實現方式爲,餘燼方式爲。如果你找不到一個沒有全局引用的方法,請在StackOverflow上尋求幫助。
  • 儘量避免通過DOM元素訪問模型數據,如$(e.target).closest("td");
  • 如果確實需要啓動從視圖代碼的轉換,則無需訪問路由器。假設你正在使用最新的餘燼,你可以撥打this.get('controller').transitionTo('newRoute')
+0

非常感謝。這有很大幫助。 –