我在我的angular .config $stateProvider中有一个状态,我希望onEnter方法能够访问该状态的控制器$作用域。
我的状态声明如下:
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('panda1', {
url: '/panda/',
templateUrl: 'templates/panda.html',
controller: 'pandaCtrl',
onEnter: onEnterPanda
})
.state(...) //bunch of other states
.state(...)
}
控制器看起来像这样:
.controller('panda1IntroCtrl',function($scope) {
$scope.name = "pandaboy1";
})
我希望onEnterPanda函数看起来像这样
function onEnterPanda() {
var scope = this.getController().get$Scope(); //would be nice
console.log(scope.name); //pandaboy1
scope.name = 'pandaboy2';
console.log(scope.name); //pandaboy2
}
我在onEnterPanda函数的this对象中找不到任何对$作用域的引用。
我也知道$作用域可能是可以接受的,比如:
angular.element(document.getElementById('yourElementId')).scope();
但这感觉不像是正确的答案。
我不清楚你到底想做什么。但是,如果我理解正确的话,你需要根据一些条件来改变控制器的设置。最简单的方法是使用一些能够提供获取/设置这些条件的服务。
state('home', {
templateUrl: 'partials/main.html',
controller:'panda1IntroCtrl',
....
},
resolve:{
info:'infoSvc',
loadProfile:function(info){
return info.setMessage("name 2");
}
}
}
然后在mainViewCtl中你可以输入
.controller('panda1IntroCtrl',[ '$scope','infoSvc', function($scope, info) {
$scope.name = info.getMessage();
})
你可以在HTML ng-init属性中放置一个方法。这个函数将在你进入视图时被调用。
如
<ion-content ng-controller="pandaCtrl" ng-init="PandaSayHi()">...</ion-content>