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路由器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
