gpt4 book ai didi

angularjs - 应用程序中可重用的 AngularJS 服务

转载 作者:行者123 更新时间:2023-12-04 13:51:15 25 4
gpt4 key购买 nike

我对 AngularJS 很陌生,所以我可能问了一个完全错误的问题。我想要完成的是在单个应用程序中创建一个具有数据绑定(bind)的可重用类。下面通过一个非常简单的示例演示了我要完成的工作。

假设我想创建一个带有值和增量方法的计数器。我可以创建一个服务并在 Controller 中使用它,如下所示:

angular.module("fiddle", ["counter"])
.controller("MainCtrl", function($scope, counter) {
$scope.counter = counter;
});

angular.module("counter", [])
.service("counter", function() {
this.count = 0;
this.increment = function(x) {
this.count += x;
};
});

然后我可以显示一个 View 来添加一个计数器:
<h1>Count: {{counter.count}}</h1>
<button ng-click="counter.increment(1)">Add 1</button>
<button ng-click="counter.increment(5)">Add 5</button>
<button ng-click="counter.increment(10)">Add 10</button>

这适用于一个计数器,但如果我想在同一个 Controller 中有多个计数器怎么办?由于服务是单例的,我不能这样做。鉴于其他服务会更加复杂,使用 Angular 创建这样的东西的最佳方法是什么?谢谢!

http://jsfiddle.net/jeffaudio/ExASb/

最佳答案

要使服务不像单例,您可以这样做:

angular.module("counter", [])
.service("counter", function() {
var aCounter = function() {
this.count = 0;
this.increment = function(x) {
this.count += x;
};
}
return {
getInstance: function () {
return new aCounter();
}
};
});

然后从您的 Controller 管理您的计数器,例如:
function myCtrl($scope, counter) {
$scope.counter1 = counter.getInstance();
$scope.counter2 = counter.getInstance();
}

http://jsfiddle.net/KLDEZ/

关于angularjs - 应用程序中可重用的 AngularJS 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062294/

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