我有以下示例:
var loadUserWidget;
loadUserWidget = function() {
console.log(Restangular.one());
if (!$scope.i) {
$scope.i = 0;
}
console.log($scope.i);
return $scope.i = $scope.i + 1;
};
loadUserWidget()
我得到以下console.log
Object {id:undefined,route:undefined,getRestangularUrl:function,getRequestedUrl:function,addRestangularMethod:function ...} cache_list_controller.js体= 1:276
0 cache_list_controller.js?body = 1:280
Object {id:undefined,route:undefined,getRestangularUrl:function,getRequestedUrl:function,addRestangularMethod:function ...} cache_list_controller.js体= 1:276
1 cache_list_controller.js?body = 1:280
你可以看到restangular方法被触发两次,我似乎无法确定原因。
更新:
Contorller:
bbControllers.controller('CacheListController', [
'$scope', 'Restangular', '$rootScope', 'Snippet', '$modal', '$templateCache', "$window", 'Widget', '$sce', '$location', function($scope, Restangular, $rootScope, Snippet, $modal, $templateCache, $window, Widget, $sce, $location) {
var loadUserWidget;
loadUserWidget = function() {
console.log(Restangular.one());
if (!$scope.i) {
$scope.i = 0;
}
$scope.i = $scope.i + 1;
return console.log($scope.i);
};
return loadUserWidget();
}
]);
app.js
var bbPlnkr = angular.module('BBPlnkr', ['BB', 'restangular', 'ngRoute', 'xeditable', 'ngSanitize']);
bbPlnkr.config(function ($routeProvider, $locationProvider, RestangularProvider) {
$routeProvider
.when('/edit', {
templateUrl: '../assets/index.html',
controller: 'CacheListController',
reloadOnSearch: false
})
.when('/edit/:id', {
templateUrl: '../assets/index.html',
controller: 'CacheListController'
})
.when('/invitation/:url', {
templateUrl: '../assets/invitation-detail.html',
controller: 'InvitationController'
})
.otherwise({
redirectTo: '/edit'
});
$locationProvider.html5Mode(true);
});
答案 0 :(得分:4)
在模板中同时使用ng-controller
指令并使用$routeProvider
声明路由时,将有两个控制器实例,它们都将触发一个Restangular请求。
如果你这样做
connsole.log($scope.$id);
你应该看到两个不同的值,因为有两个不同的控制器。
使用ng-controller
时,请勿使用$routeProvider
。