5

以下の「予定」のルート内で、親の「日」のモデルに到達して取得できます

App.Router.map(function(match) {                                          
    this.resource("day", { path: "/day/:day" }, function() {              
        this.resource("appointments", { path: "/appointments" }, function() {
            this.route("new", { path: "/:appointment_start/new" });
            this.route("edit", { path: "/:appointment_id/edit" });        
        });                                                               
    });                                                                   
});

しかし、新しいルートまたは編集ルートの奥深くにいるとき、ルートで行ったように (アクション ハンドラー内から) どのようにアクセスして親の「日」モデルを取得できますか?

App.AppointmentsEditController = Ember.Controller.extend({                
    actions: {
        updateAppointment: function(appointment) {
            var day = this.get('??');
        }
    }
});

アップデート

最終的なコントローラ コードは次のようになります。

App.AppointmentsEditController = Ember.Controller.extend({       
    needs: 'day',         
    actions: {
        updateAppointment: function(appointment) {
            var day = this.get('controllers.day');
        }
    }
});
4

2 に答える 2

4

Toran - これを追加の回答として追加して申し訳ありません。まだコメントできません - はい、無料で機能するはずです。次のようにブロックcontrollers.post内からアクセスできます。actions

var postController = this.get('controllers.post')
于 2013-10-16T17:35:34.520 に答える
2

それを行う簡単な方法があります。さらにAppointmentsEditController_

needs: "day"

dayその後、経由でコントローラにアクセスできますthis.get('controllers.day')

私はいつも次のようなものを使用します:

App.CommentsControler = Ember.Controller.extend({
    needs: "post",
    postBinding: "controllers.post",
    ...
    postName: function() {
        return this.post.name;
    }.property("post.name")
})  

この記事を見てくださいhttp://emberjs.com/guides/controllers/dependencies-between-controllers/

これが役立つことを願っています:)

于 2013-10-16T06:17:07.567 に答える