从子状态访问父控制器

时间:2015-06-19 16:19:42

标签: angularjs angular-ui-router

我在AngluarJS中有一个控制器定义如下:

'use strict';

var app = angular.module('app');

app.controller('AppCtrl', ['sth',
    function (sth) {
        this.inverse = false;
    }
]);

这里是路线deffinition:

$stateProvider.
state('app', {
    abstract: true,
    templateUrl: 'app/views/layout.html',
    controller: 'AppCtrl',
    controllerAs: 'app',
    resolve: {}
}).
state('app.settings', {
    abstract: true,
    url: '/settings',
    template: '<ui-view/>',
    onEnter: function () {

    }
});

如何在app.settings route中从AppCtrl访问逆变量?

1 个答案:

答案 0 :(得分:0)

如果您想在两个控制器之间共享数据,那么服务/工厂是您最好的选择。下面是一个如何操作的示例。我是自由编写的,所以可能存在语法错误,但你明白了。

app.controller('AppCtrl', ['sth', 'SharedData',
    function (sth, SharedData) {
        SharedData.inverse = false;
    }
]);

app.factory('SharedDate', function() {
  var data = {
     inverse: true  // or whatever default value you want to set
  };

  return data;
})

现在,您可以在任何想要使用该数据的控制器中注入SharedData工厂。