0

我正在尝试使用divwithng-click进行路由:

ng-click="go('/item/{{item.id}}')。

我可以打电话$parent.go,甚至go在使用ParentCtrl. 但ParentCtrl_2根本不起作用。我试图寻找一些答案,但无法弄清楚。我错过了什么?

app.controller('ParentCtrl', function($scope) {
        $scope.go = function(path) {
            console.log(path);
        }
    }
);

app.controller('ParentCtrl_2', ['$scope', '$location',
    function($scope, $location) {
        $scope.go = function(path) {
            $location.path(path);
        }
    }
]);

app.controller('ChildCtrl', ['$scope', '$routeParams',
    function($scope, $routeParams) {
        ...
    }
]);
4

1 回答 1

1

这里有许多悬而未决的问题,但是,比如你的 htmlng-controller结构的结构是什么。

html中的调用语法也是错误的

ng-click="go('/item/{{item.id}}')

它应该是

ng-click="go('/item/'+ item.id)"

说根据ng-click声明的位置,它可以访问父方法。如果您可以使用方法访问方法,$parent那么由于原型继承,您可以直接访问该方法。

如果结构像

<div ng-controller='ParentCtrl'>
    <div ng-controller='ParentCtrl_2'>
           <div ng-controller='ChildCtrl'>
                  <!-- ng-click somewhere here -->
           </div>
    </div>
</div>

然后,您可以在每次调用时访问该ParentCtrl_2方法。go

如果是

    <div ng-controller='ParentCtrl'>
        <div ng-controller='ParentCtrl_2'>

        </div>
        <div ng-controller='ChildCtrl'>
            <!-- ng-click somewhere here -->
        </div>
    </div>

然后您只能访问ParentCtrl方法go方法。

于 2013-09-06T03:58:11.993 回答