2015-06-19 189 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上,但我個人從未這樣做。我仍然會沿着工廠路線走下去。這樣一來,如果您將來必須共享更多數據,這將非常有用。 –