控制器用于状态中的视图

时间:2014-10-18 10:57:17

标签: angularjs angular-ui angular-ui-router

我正在尝试在抽象状态下定义一个控制器,以便我可以为我的所有视图设置一个控制器,但如果在外部定义控制器,则不会调用控制器内的函数。

.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");
 }
}]);

1 个答案:

答案 0 :(得分:0)

看看你如何定义你的控制器:

['$scope', '$state', function($state, $scope)

参数的顺序不正确。所以$ state变量实际上是范围,$ scope变量实际上是状态。