9

エンバーによって制御されるプログレスバーのようなことをしたいです。したがって、私の目には、これを達成するには2.5の方法があります。

  1. トリガーされたときに要素を設定するコントローラーにオブザーバーを配置します。width問題: 私の知る限り、コントローラ内から DOM 要素にアクセスすることはできません。つまり、ビューで行う方法と同じですthis.$('#progress')

  2. コントローラのプロパティを監視するビューにオブザーバを配置します。問題: コントローラーのプロパティを監視 (およびアクセス) する方法がわかりません。

  3. (コントローラーのプロパティを{{bindAttr}}気紛れな属性にバインドし、属性の値が変更されるたびにdata-progress="42"要素を調整します)width

4

1 に答える 1

13

オプション 2 が最善の策です。

問題: コントローラーのプロパティを監視 (およびアクセス) する方法がわかりません。

Ember は、ビューの作成時にビューのコントローラー プロパティを設定します。これを使用して、コントローラーのプロパティにアクセスできます。

App = Ember.Application.create();

App.ApplicationController = Ember.Controller.extend({
  percentComplete: '0'
});

App.ProgressView = Ember.View.extend({
  percentChanged: function() {
    percentString = (this.get('controller.percentComplete') + "%");
    this.$('.bar').css('width', percentString);
  }.observes('controller.percentComplete').on('didInsertElement')
});

ここに実際の例を投稿しました:http://jsbin.com/hitacomu/1/edit

于 2013-01-21T23:11:47.900 に答える