Ole*_*sov 5 angularjs angularjs-scope angularjs-routing
我有一个场景,我有一个共享按钮,我有一个容器控制器,名为metaCtrl,它位于html标签上.
还有内部控制器.
我有一个共享按钮,在单击时调用model.share()函数.
码:
app.controller('metaCtrl', function($scope){
$scope.model = {};
$scope.model.share = function(){
$location.path('/share').search({'share' : '1'});
}
});
Run Code Online (Sandbox Code Playgroud)
共享页面的控制器:
app.controller('shareCtrl', function($scope)){
$scope.layout.shareVisible = $location.path().share == 1 ? true : false;
$scope.model.share = function(){
$scope.layout.shareVisible = $scope.layout.shareVisible ? false : true;
var shareUrlValue = $scope.layout.shareVisible ? 1 : null;
$location.search('share', shareUrlValue);
}
});
Run Code Online (Sandbox Code Playgroud)
想法是在整个应用程序中使用相同的HTML模式,但仅在共享页面上切换共享部分(如果用户已在那里),并且如果用户当前不在那里则将用户发送到共享视图.
问题是,在我进入sahre页面,然后返回到另一个页面之后,函数share()在shareCtrl中对函数进行了参考,而不是在metaCtrl中.
我不确定这里是否有足够的信息,但我会尝试一下(我无法发表评论,因为我没有足够的代表)。请注意,您的 shareCtrl 并未创建新的模型对象,您只是分配 $scope.model.share = func...
该分配会覆盖父控制器中的函数,因为 Angular 会沿着作用域链向上查找模型对象。
请参阅此插件: http://plnkr.co/edit/yv5rrpdlkniZdg94T4Lf
请注意,在 shareCtrl 中注释掉 $scope.model = {} 后,两个字段的值都是“shareCtrl”。但是,如果您取消注释该行,则 $scope.model 位于 shareCtrl 范围内,因此 Angular 不会向上查找范围链。
| 归档时间: |
|
| 查看次数: |
7544 次 |
| 最近记录: |