2

我面临在 Ember.Textfield 中设置 id 的问题。我们有一个从 Em.Object 扩展而来的模型类。

我正在尝试通过ViewData.id.id1Ember TextField 中的控制器在 HBS(Handlebars)中访问它。但是模型没有设置id。

 {{view Ember.TextField valueBinding="value" id=ViewData.id.id1}}

我正在为 Ember 和车把使用以下库:

 (handlebars-1.0.0-rc.3.js)
 (ember-v1.0.0-rc.1.min.js)

我们有这样的代码:

 Em.ObjectController.extend({
     ViewData : data.create()
 });
 var data = Em.Object.extend({
     id: {
         id1: "textId1",
     },
 });

有没有其他人遇到过这个问题?请协助。提前致谢。

4

2 回答 2

3

您可以使用以下属性设置视图id属性elementId

{{view Ember.TextField elementId="foobar"}}

不幸的是,这不能是计算属性或绑定。以下将不起作用:

{{view Ember.TextField elementIdBinding="id.id1"}}

这也不会:

var TextFieldWithID = Ember.TextField.extend({
  elementId: function() {
    return this.get('controller.id.id1');
  }.property('controller.id.id1')
});

{{view TextFieldWithID}}

问题是 Ember 在创建元素时需要一个唯一、稳定的 ID,以便它可以设置绑定。通过使elementId属性成为绑定或计算属性,您说它可以更改。然后 Ember 会忽略该属性并生成自己的唯一 ID。

于 2013-03-10T23:26:51.173 回答
0

elementIdBinding 有效。

我们需要像这样使用 attributeBindings 重新打开 Ember.TextField

Ember.TextField.reopen({ attributeBindings: ['elementId'] });

hbs 将具有以下代码。

{{查看 Ember.TextField valueBinding="data" elementIdBinding="ViewData.id.id1"}}

有用 !!!!

干杯!!

于 2013-03-11T05:24:16.970 回答