AngularJS: Why people prefer factory to share data between controllers
本问题已经有最佳答案,请猛点这里访问。
我是刚来的。所以试着知道如何在两个控制器之间共享数据并搜索谷歌。我浏览了几页,发现大部分时间人们都使用工厂来共享数据。我只是想知道我们不能用服务代替工厂吗?
第一例1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <input type="text" ng-model="data.firstName"> Input is : {{data.firstName}} Input should also be here: {{data.firstName}} myApp.factory('MyService', function(){ return { data: { firstName: '', lastName: '' }, update: function(first, last) { // Improve this method as needed this.data.firstName = first; this.data.lastName = last; } }; }); // Your controller can use the service's update method myApp.controller('SecondCtrl', function($scope, MyService){ $scope.data = MyService.data; $scope.updateData = function(first, last) { MyService.update(first, last); } }); |
第二例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | var myApp = angular.module('myApp', []); myApp.factory('Data', function(){ var service = { FirstName: '', setFirstName: function(name) { // this is the trick to sync the data // so no need for a $watch function // call this from anywhere when you need to update FirstName angular.copy(name, service.FirstName); } }; return service; }); // Step 1 Controller myApp.controller('FirstCtrl', function( $scope, Data ){ }); // Step 2 Controller myApp.controller('SecondCtrl', function( $scope, Data ){ $scope.FirstName = Data.FirstName; }); |
示例取自此URL,在AngularJS控制器之间共享数据。
请引导我。
.service()和.factory()都是单例的,因为无论哪个API创建了每个服务,您都只能获得一个实例。
记住.service()只是一个构造函数,它是用new调用的,而.factory()只是一个返回值的函数。
使用.factory()给了我们更多的能力和灵活性,而.service()本质上是.factory()调用的"最终结果"。.service()通过对函数调用new来给我们返回值,而.factory()是这个编译过程之前的一步,因为我们要选择要实现和返回的模式。