gpt4 book ai didi

angularjs - 如何在多个 Controller 中重用一个函数

转载 作者:行者123 更新时间:2023-12-04 11:51:23 26 4
gpt4 key购买 nike

我有多个用于多条路线的 Controller :

app.controller('FirstController', function ($scope) {
$scope.func = function () {
console.log('route 1');
}
}
app.controller('SecondController', function ($scope) {
$scope.func = function () {
console.log('route 2');
}
}
...

以及使用 $scope.func 的指令, 这边走:
app.directive('thedirective', function () {
return {
link: function (scope, $element, attrs) {
$scope.func(attrs.thedirective);
}
}
});
$scope.func在每个 Controller 中是不同的。我希望 $scope.func 在我们在 route1 中记录“route 1”,FirstController 是当前 Controller ,并在 route 2 中记录“route 2”,但只有“rout 1”是我在控制台中得到的。你能告诉我为什么改变路线不会改变指令的 $scope 吗?

最佳答案

在 AngularJS 中,如果函数在 Controller 中很常见。

最佳实践是使用将注入(inject) Controller 的服务或工厂。

app.factory('commonService', function ($scope) {
var obj= {};
obj.func = function () {
console.log('route 1');
}
obj.func1 = function () {
console.log('route 2');
}
return obj;
}
app.controller('FirstController', function ($scope,commonService) {
console.log('route 1' + commonService.func());
}
app.controller('SecondController', function ($scope,commonService) {
console.log('route 2' + commonService.func1());
}

当我们谈论指令时,指令的范围将与我们定义的一个 Controller 或指令 Controller 或外部 Controller 一起使用。
<div ng-controller="firstController">
<your-directive />
</div>

<div ng-controller="secondController">
<your-directive />
</div>

关于angularjs - 如何在多个 Controller 中重用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012643/

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