我正在尝试在抽象状态下定义一个控制器,以便我可以为我的所有视图设置一个控制器,但如果在外部定义控制器,则不会调用控制器内的函数。
.state('update', {
url : '/update',
abstract: true,
template: '<ui-view/>',
controller : function($scope) { //works
$scope.hello = function() {
alert("hello");
}
}
controller : 'updateController' // Doesn't work
})
.state('update.detail', {
url : '/view/:id',
views : {
"" : {
templateUrl : 'update-detail.html'
},
"header@update.detail" : {
templateUrl : 'header.html'
},
"genericnavigation@update.detail" : {
templateUrl : 'generic-navigation.html'
},
"mnavigation@update.detail" : {
templateUrl : 'mobile-navigation.html'
},
"updatecontent@update.detail" : {
templateUrl : 'update-content.html'
}
}
})
HTML
header.html
<div ng-click="hello();"></div> //Click event doesn't get fired for ( controller : 'updateController' )
app.controller('updateController', ['$scope', '$state', function($state, $scope) {
console.log("inside update")
$scope.hello = function() {
alert("hello");
}
}]);
答案 0 :(得分:0)
看看你如何定义你的控制器:
['$scope', '$state', function($state, $scope)
参数的顺序不正确。所以$ state变量实际上是范围,$ scope变量实际上是状态。