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 には次のコードが含まれます。

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

できます !!!!

乾杯!!

于 2013-03-11T05:24:16.970 に答える