1

モデルを設定しようとしている次のコードがありますApplicationRouteが、機能していないようです。Ember コードに関していくつか疑問があります。まず、申請ルートのモデルを設定できますか? 次に、ルートのモデルに count および fileName という名前のフィールドがある場合、コントローラーでもこれらのフィールドを宣言する必要がありますか。こうするとコントローラーの値がモデルの値よりも優先されるようです。また、合計がどこにも定義されていなくても、 this.set('total',5)のようなことをすることはできますか。setupController

App.ApplicationRoute=Ember.Route.extend({
model:function(){
    console.log('model called');
    return {count:3,fileName:'Doc1'};
},
setupController:function(){
    console.log(this.get('model').fileName);
    this.set('count',this.get('model.count')); //Do I manually need to do this?
    this.set('fileName',this.get('model.fileName')); //Do I manually need to do this?
}
});
App.ApplicationController=Ember.Controller.extend({
    count:0,//Is this necessary?? Can I directly set the property with declaring it like this
    fileName:''
});
4

1 に答える 1

1

できるよ:

App.ApplicationController=Ember.Controller.extend({
    count: function(){
       return this.get('model').get('count');
    }.property('model.count')
});

したがって、いつでもmodel.count変更すると、プロパティは自動的に更新されます。

そうです、モデルをルートに直接設定できます。コントローラーで行う場合this.set('total', 5)、モデルではなくコントローラーでのみそのプロパティを設定します。モデルを更新するには、次のことを行う必要があります。

var model = this.get('model');
model.set('total', 5);

最後に、あなたのsetupControllerコードは正しくありません。Ember ドキュメント (ここにあります) にあるサンプル メソッドは次のとおりです。

App.SongRoute = Ember.Route.extend({
  setupController: function(controller, song) {
    controller.set('model', song);
  }
});
于 2014-05-15T06:31:28.663 に答える