anglejs – 角厂一直叫两次

前端之家收集整理的这篇文章主要介绍了anglejs – 角厂一直叫两次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从角度调用REST服务,它总是调用工厂两次.这是工厂代码. @H_404_1@app.factory('dataFactory',['$http',function ($http) { var urlBase = '/api'; var dataFactory = {}; dataFactory.getMyItems = function () { return $http.get(urlBase + '/MyItems'); }; return dataFactory; } ]);

这是从控制器调用

@H_404_1@app.controller('MyItemsController',['$scope','dataFactory',function ($scope,dataFactory) { $scope.myItems; getItems(); function getItems() { dataFactory.getMyItems() .success(function (itemsData) { $scope.myItems = itemsData; }) .error(function (error) { $scope.status = 'Unable to load items data: ' + error.message; }); } } ]);
我有同样的问题,你的控制器一般叫两次;因此,工厂将被召唤两次.

但是在看了这个解决方案之后:
Combating AngularJS executing controller twice

步骤1:

确保您只在(主布局视图)中添加服务和控制器一次.

例:

的index.html

@H_404_1@<script src="../MyItemsController.js"></script> <script src="../MyItemsService.js"></script>

如果在执行步骤1后仍然存在问题,请转到步骤2

第2步:

有两种方法可以做到:

1.将控制器保留在您的视图(ng-controller)中,并将其从配置路由中删除,如下所示:

路由配置(通常是app.js):

@H_404_1@app.config(['$routeProvider',function($routeProvider){ $routeProvider.when('/',{ templateUrl: 'pages/home.html' //Remove controller from here }); }]);

home.html的

@H_404_1@<!-- Add the ng-controller in your view --> <div ng-controller="MyItemsController"> <!-- Your stuff --> </div>

2.或者将控制器保留在您的配置路由中,并删除控制器
从这样看:

路由配置(通常是app.js):

@H_404_1@app.config(['$routeProvider',{ templateUrl: 'pages/home.html',controller: 'MyItemsController' //Add the controller here }); }]);

home.html的

@H_404_1@<!-- Remove the ng-controller in your view --> <div> <!-- Your stuff --> </div>

注意:以上解决方案也适用于ui路由器.

猜你在找的Angularjs相关文章