从 didinsertelement 视图访问应用程序控制器

Access application controller from didinsertelement view

我想访问应用程序控制器,这样我就可以 get/set 一个变量 (selected_date) 值。

myApp.ApplicationController = Ember.Controller.extend({
    selected_date: null,
  actions: {
    }
  }
});

我想从视图 (didinsertelement) 编辑 selected_date,视图的控制器是:

myApp.CreportController = Ember.ObjectController.extend({
    needs: ["application"]
});

查看:

CreportController View = Ember.View.extend({
    didInsertElement: function() {
        var controller = this.get('controller');
        var selected_date = controller.get('controllers.application').get('selected_date');
        ...

你的属性有误。使用 needs 功能将这些控制器置于 controllers 属性 中。然后,您的视图可以使用 controller 属性 访问其自己的控制器。所以你需要在你看来这样做:

didInsertElement: function() {
    var selected_date = this.get('controller.controllers.application').get('selected_date');
}

我用解决方案更新了代码:

var controller = this.get('controller');
var selected_date = controller.get('controllers.application').get('selected_date');