0

我对 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并用所选条目填充文本字段。但是当我再次点击表格时,什么也没有发生。

我想要的是动态更改文本字段的内容。

我希望有一个人可以帮助我。

4

1 回答 1

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 上寻求帮助。
  • 尽量避免通过 DOM 元素访问模型数据,例如$(e.target).closest("td");
  • 如果您确实需要从视图代码开始转换,则无需访问路由器。假设您使用的是最新的 ember,您可以致电this.get('controller').transitionTo('newRoute')
于 2013-01-08T14:14:06.980 回答