Ember js状态处理

时间:2013-01-08 09:27:54

标签: ember.js

我对Ember很新,我有一些问题和疑问。

我使用此函数从单个表格行中获取信息

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 个答案:

答案 0 :(得分: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等全局引用。该框架应该允许您通过局部变量访问所需的一切。从click fx访问控制器的方式是 ember方式的操作示例。如果您无法找到没有全局参考的方法,请在StackOverflow上寻求帮助。
  • 尽量避免通过$(e.target).closest("td");
  • 等DOM元素访问模型数据
  • 如果您确实需要启动视图代码的转换,则无需访问路由器。假设您使用的是最新的余烬,可以拨打this.get('controller').transitionTo('newRoute')