2015-06-19 139 views
0

我在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() { 

    } 
}); 

如何从AppCtrl访问逆变量app.settings路线?

+0

如果你想在2个控制器之间共享数据,服务/工厂是你最好的选择。 –

回答

0

如果你想在2个控制器之间共享数据,服务/工厂是你最好的选择。以下是你如何去做的一个例子。我自由写了它,所以可能会出现语法错误,但您明白了。

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工厂注入到您想要使用该数据的任何控制器中。

+0

我知道我可以使用服务,但我觉得这只是一个矫枉过正的变化。如果我使用$ scope.inverse而不是this.inverse,它可以从子范围访问。我很想知道如果有可能在我的方法中做同样的事情。 – lucas

+0

另一种方法是将其设置在rootScope上,但我个人从未这样做。我仍然会沿着工厂路线走下去。这样一来,如果您将来必须共享更多数据,这将非常有用。 –