0

私は Ember.js の初心者ですが、私の問題に対する非常に簡単な答えがあると思いますので、ご容赦ください。

コントローラーのプロパティと、コントローラーの対応するテンプレートにある Ember.TextField の「値」プロパティとの間の双方向バインディングを確立しようとしています。次のように、Ember.TexField の value プロパティに反映される特定の初期値をコントローラーのプロパティに与えることに既に成功しています。

js コード:

App = Ember.Application.create();
App.IndexController = Ember.ObjectController.extend({
              aProperty: 1 });

テンプレート:

<script type:"text/x-handlebars" data-template-name="index">
{{view Ember.TextField valueBinding="aProperty"}}
</script>

これで、テキスト フィールドに値 ("1") が表示され、すべて問題ありません。テキストフィールドに新しい値を入力しようとすると、「2」と言い、ブラウザーコンソールで App.IndexController.get("aProperty") を使用して「aProperty」の値を確認しようとすると、機能せず、スローされます「get()」が定義されていないというエラーが表示されます。IndexController から「aProperty」の値を取得し、値が Ember.TextField に入力した値に更新されたかどうかを確認するにはどうすればよいですか?

ヒント、コメント、アドバイスは大歓迎です!

ありがとうございました!

編集: 以下の両方の回答で、私がやろうとしていたことが達成されました。私もそれを機能させました:次のApp.IndexControllerように、それを拡張した後にの具体的なインスタンスを作成しました:

App.IndexController = Ember.ObjectController.extend({
              aProperty: 1 });
App.indexController = App.IndexController.create();

aPropertyを使用して、コンソールからの値を取得できますApp.cueController.get('aProperty')。ただし、Ember のドキュメントのすべての例では、コントローラーの具体的なインスタンスが作成されることはありません。そのため、これが必要かどうか疑問に思っており、Ember が実際のアプリで推奨することはあまりありません。何か案は?

4

2 に答える 2

2

デバッグ コンソールで次のようにコントローラーを検索する必要があります。

App.__container__.lookup('controller:index').get('aProperty')

http://jsbin.com/uxojek/9/edit

于 2013-06-01T15:10:11.927 に答える
0

を使用するの__container__はデバッグ目的のみであるため、private を使用せずにプロパティの変更をログに記録する場合は、変更を__container__監視するコントローラー プロパティにオブザーバーを設定し、デバッガー コンソールに新しい値をログに記録できます。

例:

App = Ember.Application.create({});

App.IndexController = Ember.ObjectController.extend({
  aProperty: 1,
  aPropertyDidChange: function() {
    console.log(this.get('aProperty'));
  }.observes('aProperty')
});

ワーキングjsbin

それが役に立てば幸い

于 2013-06-01T15:14:25.420 に答える