设置Ember.TextField的ID

时间:2013-03-10 14:50:10

标签: javascript ember.js

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

我试图通过Ember TextField中的ViewData.id.id1控制器在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",
     },
 });

还有其他人遇到过这个问题吗?请帮助。提前谢谢。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

elementIdBinding有效。

我们需要使用像此

这样的attributeBindings重新打开Ember.TextField

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

hbs将包含以下代码。

{{view Ember.TextField valueBinding =“data”elementIdBinding =“ViewData.id.id1”}}

它有效!!!!

干杯!!