Я пытаюсь вызвать контроллер из представления. Я использовал инструмент Chrome dev, и я знаю, что контроллер вызывается, но не выполняется.Функция контроллера вызывается, но не выполняется. AngularJS
Моя цель - позвонить серверу, чтобы получить дополнительную информацию о канале, который я буду отображать после.
На самом деле я не нахожу, где искать, чтобы заставить его работать. Какие-нибудь советы по отладке такого кода?
Контроллер:
angular.module('guideController').controller('scheduleController', ['$scope', 'API', function($scope, API) {
$scope.getChannelSchedule = function(channelId) {
API.getScheduleForChannelId(channelId)
.success(function(schedule) {
$scope.schedule = schedule;
})
.error(function(error) {
//ERROR management
});
};
}]);
Фабрика:
angular.module('guideService', [])
.factory('API', ['$http', function($http) {
return {
getScheduleForChannelId: function(channelId) {
return $http.get('http://localhost:5000/schedule/' + channelId);
}
};
}]);
и вид:
<div class="container" ng-controller="scheduleController">
test {{scheduleController.getChannelSchedule(1234)}}
</div>
Edit: Я был в состоянии решить мою проблему.
Я изменил синтаксис для
<tr class="channel-body" ng-controller="channelController" ng-repeat="channel in channels | limitTo:40">
<td ng-repeat="program in programs">
{{program.title}}
</td>
</tr>
и модифицировал контроллер:
angular.module('guideController')
.controller('channelController', ['$scope', 'API', function($scope, API) {
$scope.getPrograms = function() {
alert($scope.schedule);
API.getScheduleForChannelId($scope.channel.channelId).
then(function(data) {
$scope.programs = data.data;
});
};
$scope.getPrograms();
}]);
и он работал. Я не понял, как использовать контроллер. Он может быть не совсем спроектирован, но он работает по назначению.
Вы должны ссылаться на это право? 'scheduleController.getChannelSchedule()' и не имеет смысла выполнять функцию в интерполяции (которая ничего не возвращает) и которая задает свойство scope несинхронно. Будьте осторожны, интерполяции запускаются каждый цикл дайджеста. – PSL
Довольно распространенный в JavaScript, вы назначаете свое выражение самой функции, а не результаты функции. вам не хватает '()'. – Claies
Обновлен мой код. В то время как отладка, я пробовал некоторые напуганные вещи, и то, что я скопировал, было неправильным, мое плохое. Я пытаюсь вызвать метод, требующий один параметр, является ли это законным в angularjs? – plog17