gpt4 book ai didi

javascript - 有没有办法在 AngularJS 之外重新定义绑定(bind)到 $ctrl 的函数?

转载 作者:行者123 更新时间:2023-12-02 22:05:20 24 4
gpt4 key购买 nike

在我的 DOM 中,我有一个包含 ng-click="$ctrl.goToHome() 的元素,它绑定(bind)到我网站的 Logo 。该元素由第三方创建 -用 AngularJS 制作的派对应用程序。请参阅下面的完整元素:

<img ng-if="::!$ctrl.config.url" ng-click="$ctrl.goToHome()" class="ct-logo" ng-src="https://www.example.com/wp-content/themes/mytheme/logo.png" alt="" src="https://www.example.com/wp-content/themes/mytheme/logo.png">

但是,该函数无法正常工作,可能是因为该函数未定义。我不知道在哪里定义它。有没有办法重新定义 goToHome() 函数?换句话说,是否可以使用 jQuery 或 JS 重新绑定(bind)函数?如果是这样,最简单的方法是什么?

最佳答案

所以基本上, $ctrl 是它自己的范围,有点像它自己的世界,它内部定义的每个方法都不存在于外部,看起来你正在尝试使用 $ ctrl.goToHome() 超出 $ctrl 范围。

如果您希望 goToHome() 方法在 $ctrl 范围之外可用。

您可以选择两者之一

  • 您可以将 goToHome() 方法提取到一个工厂,然后在您想要使用它的任何范围内调用它。这样 goToHome() 总是做一件事。
const app = angular.module("app", []);

const goToHomeHandler = function() {
return {
goToHome: function() {
alert('go Home');
}
};
};

app.factory('goToHomeHandler', goToHomeHandler);

app.controller("personController", function($scope, goToHomeHandler) {
$scope.firstName = "John";
$scope.lastName = "Doe";
$scope.goToHome = function () {
goToHomeHandler.goToHome();
}
});

app.controller("personController2", function($scope, goToHomeHandler) {
$scope.firstName = "Second John";
$scope.lastName = "Second Doe";
$scope.goToHome = function () {
goToHomeHandler.goToHome();
}
});
  • 另一个选择(也许不是最好的选择)是在 $windows 范围内定义 goToHome() 方法,这样就可以在任何地方访问它。

我在下面添加了一个小例子

正如你所看到的,即使 test() 方法是在 personController 中创建的,它也可以在 personController2 中使用,只要它通过$windows范围访问

    const app = angular.module("app", []);
app.controller("personController", function($scope, $window) {
$window.goToHome = function() {
alert('yoyo');
}
$scope.firstName = "John";
$scope.lastName = "Doe";
$scope.goToHome = function () {
$window.goToHome();
}
});

app.controller("personController2", function($scope, $window) {
$scope.firstName = "Second John";
$scope.lastName = "Second Doe";
$scope.goToHome = function () {
$window.goToHome();
}
});

关于javascript - 有没有办法在 AngularJS 之外重新定义绑定(bind)到 $ctrl 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737162/

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