2015-03-26 5 views
2

У меня есть следующий контроллер ЯШ:AngularJs не может прочитать свойство «UpdateTime» неопределенной

angular.module('gtApp').controller('settingsController', ["$scope", function($scope, SincService) { 
    $scope.CallTime = 5; 
    $scope.$watch('CallTime', function() { 
     SincService.UpdateTime(CallTime); 
    });  
}]); 

и следующий завод:

angular.module('gtApp').factory('SincService', function ($rootScope) { 
    var data = {}; 

    data.CallTime = 5; 

    data.UpdateTime = function(value) { 
     this.CallTime = value; 
     $rootScope.$broadcast("timeUpdated"); 
    } 

    return data; 
}); 

Я хочу, чтобы вызвать метод UpdateTime от контроллера Js когда это переменная CallTime изменяется в контроллере, но я получаю следующее: Cannot read property 'UpdateTime' of undefined. Я уже искал и читал много сообщений об этой ошибке, но я не могу найти, что я делаю неправильно. Пожалуйста, помогите с этим :).

Спасибо!

ответ

2

Вы забыли объявить ввод службы в нотации массива. Она должна быть:

angular.module('gtApp').controller('settingsController', ["$scope", "SincService", function($scope, SincService) { 
    $scope.CallTime = 5; 
    $scope.$watch('CallTime', function() { 
     SincService.UpdateTime(CallTime); 
    });  
}]); 

Примечание "SincService" строку в качестве второго элемента массива по определению контроллера.

0

CallTime должен быть либо newVal от функции часов или $scope.CallTime, также пропустил добавить зависимость от SincService

angular.module('gtApp').controller('settingsController',["$scope",'SincService', function($scope, SincService) { 
    $scope.CallTime = 5; 
    $scope.$watch('CallTime', function(newVal) { 
     SincService.UpdateTime(newVal); 
    });  
}]); 
Смежные вопросы