2014-02-03 3 views
0

У меня есть следующий пример:Restangular метод увольнения дважды

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 не определено, маршрут: неопределенную, getRestangularUrl: функция, getRequestedUrl : функция, addRestangularMethod: функция ...} cache_list_controller.js тела = 1: 276

0 cache_list_controller.js тела = 1: 280

Объект {ID не определено, маршрут не определено, getRestangularUrl: функция, getRequestedUrl: функция, addRestangularMethod: функция ...}? cache_list_controller.js тело = 1: 276

1 cache_list_controller.js тела = 1: 280

Вы можете видеть, что повторный метод запускается дважды, и я не могу понять, почему.

Update:

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

У вас есть что-то вроде '{{loadUserWidget()}}' в вашей разметке? –

+0

@IlanFrumer nope – user532339

+0

Можете ли вы поделиться больше кода? –

ответ

4

При использовании как ng-controller директивы в шаблоне и объявляющие маршрутов с использованием $routeProvider будет два экземпляра контроллера, и они оба будут запускать рестатулярный запрос.

Если вы

connsole.log($scope.$id); 

Вы должны видеть два различных значения, так как существуют два разных контроллера.

Не используйте ng-controller, если вы используете $routeProvider.

+0

Удивительный, работал как шарм! – user532339

Смежные вопросы