gpt4 book ai didi

angularjs - AngularJS 中的方法重载\重写

转载 作者:行者123 更新时间:2023-12-02 23:27:45 26 4
gpt4 key购买 nike

我有一个场景,我有一个共享按钮,我有一个容器 Controller ,称为metaCtrl,位于html标签上。

还有内部 Controller 。

我有一个共享按钮,单击时会调用 model.share() 函数。

代码:

app.controller('metaCtrl', function($scope){
$scope.model = {};
$scope.model.share = function(){
$location.path('/share').search({'share' : '1'});
}
});

分享页面本身的 Controller :

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);
}
});

这个想法是在整个应用程序中使用相同的 HTML 模式,但仅切换共享页面上的共享部分(如果用户已经在那里),并在用户不在时将其发送到共享 View 目前在那里。

问题是,当我进入 sahre 页面,然后返回到其他页面后,函数 share() 引用了 shareCtrl 中的函数,而不是 metaCtrl 中的函数。

最佳答案

我不确定这里是否有足够的信息,但我会尝试一下(我无法发表评论,因为我没有足够的代表)。请注意,您的 shareCtrl 并未创建新的模型对象,您只是分配 $scope.model.share = func...

该赋值会覆盖父 Controller 中的函数,因为 Angular 会沿着作用域链向上查找模型对象。

看看这个笨蛋: http://plnkr.co/edit/yv5rrpdlkniZdg94T4Lf

注意,在shareCtrl中注释掉了$scope.model = {},这两个字段的值都是“shareCtrl”。但是,如果您取消注释该行,则 $scope.model 位于 shareCtrl 范围内,因此 Angular 不会向上查找范围链。

关于angularjs - AngularJS 中的方法重载\重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18843762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com