anglejs – 角厂一直叫两次
发布时间:2020-12-17 07:33:13 所属栏目:安全 来源:网络整理
导读:我从角度调用REST服务,它总是调用工厂两次.这是工厂代码. app.factory('dataFactory',['$http',function ($http) { var urlBase = '/api'; var dataFactory = {}; dataFactory.getMyItems = function () { return $http.get(urlBase + '/MyItems'); }; retur
我从角度调用REST服务,它总是调用工厂两次.这是工厂代码.
app.factory('dataFactory',['$http',function ($http) { var urlBase = '/api'; var dataFactory = {}; dataFactory.getMyItems = function () { return $http.get(urlBase + '/MyItems'); }; return dataFactory; } ]); 这是从控制器调用的 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; }); } } ]);
我有同样的问题,你的控制器一般叫两次;因此,工厂将被召唤两次.
但是在看了这个解决方案之后: 步骤1: 确保您只在(主布局视图)中添加服务和控制器一次. 例: 的index.html <script src="../MyItemsController.js"></script> <script src="../MyItemsService.js"></script> 如果在执行步骤1后仍然存在问题,请转到步骤2 第2步: 有两种方法可以做到: 1.将控制器保留在您的视图(ng-controller)中,并将其从配置路由中删除,如下所示: 路由配置(通常是app.js): app.config(['$routeProvider',function($routeProvider){ $routeProvider.when('/',{ templateUrl: 'pages/home.html' //Remove controller from here }); }]); home.html的 <!-- Add the ng-controller in your view --> <div ng-controller="MyItemsController"> <!-- Your stuff --> </div> 2.或者将控制器保留在您的配置路由中,并删除控制器 路由配置(通常是app.js): app.config(['$routeProvider',{ templateUrl: 'pages/home.html',controller: 'MyItemsController' //Add the controller here }); }]); home.html的 <!-- Remove the ng-controller in your view --> <div> <!-- Your stuff --> </div> 注意:以上解决方案也适用于ui路由器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |