2013-03-10 56 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」}}

它的工作原理!!!!

乾杯!