gpt4 book ai didi

javascript - 在 Controller AngularJS 之间共享函数

转载 作者:行者123 更新时间:2023-11-29 14:43:18 25 4
gpt4 key购买 nike

我假设这很简单,但是我如何通过将函数存储在“.run”阶段来获得可以在我的 Controller 中访问的全局函数?

很简单,在 DOM 中单击一个按钮会触发在相应 Controller 中调用的全局函数。

我已经尝试了各种方法,并且想要一种非常简单的方法来帮助最大程度地减少我目前拥有的代码量。见下文:

**HTML**

<input data-ng-click="clearSignInError()" data-ng-model="email"
type="email"
id="inputEmail" class="form-control" placeholder="Email address"
required>

**JS**

app.run(['$rootScope', '$state', function($rootScope, $state) {

$rootScopecope.clearSignInError = function () {
$rootScope.loginError = null;
$rootScope.loginSuccess = null;
};

}]);

app.controller('loginCtrl', ['$scope', 'Auth', '$state', '$rootScope'
function($scope, Auth, $state, $rootScope) {

$rootScope.clearSignInError()

}]);

最佳答案

您最好的选择可能是使用服务或工厂,然后在整个应用程序需要时将它们作为依赖项注入(inject)。

Angular Services

Angular Factories

编辑:在这个 plunkr 中添加了一个示例服务

https://plnkr.co/edit/zqWS9gkTsm2OF1FTb24Z?p=preview

app.service('AuthService', function() {
this.loginSuccess = function() {
// do stuff when login is successful
}

this.loginError = function() {
// handle login errors here
}

this.clearLoginError = function() {
console.log("Clear Login Error");
alert("Clear Login Error");
}
});

// modified your controller
app.controller('loginCtrl', ['$scope', 'Auth', 'AuthService', '$state', '$rootScope', function($scope, Auth, AuthService, $state, $rootScope) {

$scope.clearSignInError = AuthService.clearLoginError;

}]);

**HTML**
<input data-ng-click="clearSignInError()" data-ng-model="email"
type="email" id="inputEmail" class="form-control" placeholder="Email address" required>

关于javascript - 在 Controller AngularJS 之间共享函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35747482/

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