2013-01-08 63 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

非常感谢。这有很大帮助。 –