Ember.js 如何绑定余烬视图的元素ID?

Ember.js 如何绑定余烬视图的元素ID?,ember.js,Ember.js,我的模型“content.id”包含一个字符串,例如“123”: 不只是将这个视图的id设置为“123”,我希望它是“message-123”,基本上是自定义正在使用的字符串。遗憾的是,Ember不允许绑定为函数,这将解决我的问题(我可以在控制器上定义这样的函数) 实现这一点的最佳方法是什么?您可以在控制器(或其他地方)中定义计算属性: 控制器 MyApp.ApplicationController = Ember.Controller.extend({ content: "a-c

我的模型“content.id”包含一个字符串,例如“123”:

不只是将这个视图的id设置为“123”,我希望它是“message-123”,基本上是自定义正在使用的字符串。遗憾的是,Ember不允许绑定为函数,这将解决我的问题(我可以在控制器上定义这样的函数)


实现这一点的最佳方法是什么?

您可以在控制器(或其他地方)中定义计算属性:

控制器

MyApp.ApplicationController = Ember.Controller.extend({
  content: "a-content",

  editedContent: function() {
      return "message-" + this.get('content');
  }.property('content')
});
视图

MyApp.FooView = Ember.View.extend({
    tagName: 'p'
});
模板(其中内容为
字符串
,此处)

还有

编辑

视图如何查看属性
editedContent
,因为它属于
ApplicationController
控制器

路由器启动后,在未定义
ApplicationView
时,会自动呈现
ApplicationView
或其模板。如果您想了解更多详细信息,我建议您阅读余烬指南:

{{editedContent}
直接获取控制器
editedContent
属性,因为默认视图上下文是其控制器,如您所读:

{{{#view}}
助手不再更改上下文,而是默认维护父上下文。或者,我们将使用控制器属性(如果提供)。您也可以选择直接替代上下文属性。命令如下:

  • 指定控制器
  • 提供的上下文(通常通过把手)
  • parentView的上下文(对于ContainerView的子级)

Ember.View的
id
在创建后不应更改,请参见相应的[code][1]。通过使用绑定,您可以更改
id
/
elementId
,然后抛出错误。所以我这里的问题是为什么要使用
id
。您的用例是什么?您可以通过使用自定义CSS类来解决您的问题吗?[1] :实际上,我有一个问题:视图如何查看属性
editedContent
,因为它属于
ApplicationController
控制器?感谢您的澄清。出于某种原因,我的印象是路由器已经被弃用了,所以我从来没有读过太多关于它们的文章,但看起来它们实际上正在成为Ember 1.0的核心部分。开始阅读文章,谢谢!路由器肯定不会被弃用,但它的界面会有一点变化,变得更加“用户友好”。例如,@tomdale起草了一份草案:
MyApp.FooView = Ember.View.extend({
    tagName: 'p'
});
{{#view MyApp.FooView elementIdBinding="editedContent"}}
    {{content}}
{{/view}}