【问题标题】:Ember js state handlingEmber js 状态处理
【发布时间】:2013-01-08 09:27:53
【问题描述】:

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

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

我希望有人可以帮助我。

【问题讨论】:

    标签: ember.js


    【解决方案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')

    【讨论】:

    • 非常感谢。这帮助很大。
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 2015-01-17
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2018-09-18
    相关资源
    最近更新 更多