我正在尝试将div
与ng-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) {
...
}
]);
答案 0 :(得分:1)
这里有许多未解答的问题,但是,就像你的html ng-controller
结构的结构一样。
html中的调用sytax也是错误的
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
方法。