2013-03-10 54 views
2

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

我想通过Ember TextField中的ViewData.id.id1这样的控制器访问HBS(把手)。但是这个模型并没有设置id。

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

我使用的余烬和车把下面的库:

(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", 
    }, 
}); 

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

+0

你试过把它放在引号中吗? id =“ViewData.id.id1” – mavilein 2013-03-10 15:08:41

+0

如果这不能解决,我想你必须使用绑定 - > id =“ViewData.id.id1” – mavilein 2013-03-10 15:15:04

回答

3

您可以设置一个view'd 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}} 

的问题是,灰烬需要一个独特的,稳定的ID时生成的元素,因此它可以设置绑定。通过使elementId属性成为绑定或计算属性,您说它可以更改。 Ember然后只是忽略该属性并生成它自己的唯一ID。

0

elementIdBinding的工作原理。

我们需要这样

Ember.TextField.reopen的attributeBindings重新打开Ember.TextField({ attributeBindings:[ 'elementId'] });

该hbs将具有以下代码。

{{视图Ember.TextField的ValueBinding = “数据” elementIdBinding = “ViewData.id.id1”}}

它的工作原理!!!!

干杯!