TL; DR - $on
должен изменить значение practiceCount
... почему? Здесь codepen:http://codepen.io/anon/pen/qNERvaПочему этот номер не обновляется автоматически на моей странице?
Это мой третий день практики MEAN развития, так что я не слишком много опыта с этим.
Итак, у меня есть контроллер MainController
. Я хочу, чтобы этот контроллер был доступен на статичных/постоянно доступных элементах (которые не будут отображаться/скрываться при условии), таких как мой nav-bar, и его цель - передавать глобальные данные, такие как общее количество X в приложении.
app.controller('MainController', [ '$scope','$http', function($scope, $http){
$scope.practiceCount = 0;
$scope.$on('practiceInfo', function(event, practiceInfo){
$scope.practiceCount = practiceInfo.count;
});
}]);
У меня тогда есть контроллер PracticeController
. Этот контроллер специально предназначен для управления Практиками в этом приложении (Практика в медицинских терминах), т. Е. Создания/удаления/редактирования Практик.
app.controller('PracticeController', ['$scope', '$http', function($scope,$http){
//refresh function that fetches practices
var refresh = function(){
$http.get('/practices').success(function(response){
$scope.practices = response;
$scope.practiceCount = response.length;
$scope.$emit('practiceInfo', {
count: $scope.practiceCount
});
});
}
refresh();
$scope.createPractice = function(){
if($scope.practice)
$http.post('/practices', $scope.practice).success(function(response){
console.log(response);
refresh();
})
}
}]);
Наконец, в моем файле index.html
(шаблон), я подключил MainController
к <ul>
моей нав-бар, и я пытаюсь отобразить practiceCount
, как например:
<ul ng-controller="MainController">
{{practiceCount}}
</ul>
Мое ожидание в соответствии с моим текущим пониманием
Теперь ... Я мало знаю об этом, но из моего понимания, когда я испускаю practiceInfo
w с новым значением, хранящимся в count
, то оно должно быть получено MainController
, а свойство practiceInfo.count
должно быть установлено как новое значение $scope.practiceCount
в MainController
... что означает, что его значение было изменено/сброшено на любой результат приема функции был. При этом не следует ли автоматически менять новый номер в HTML?
Это просто остается как 0, который, как я инициализируюсь его в MainController
Совета был бы оценен, по этому вопросу, или что-нибудь еще, что релевантно.
Спасибо.
где вы используете 'PracticeController'? –
@ DanielA.White на 'practice.html' (динамически загружаемый шаблон) -' ngRoute' позаботится об этом. –
Исход зависит от дерева контроллера hiearchy. мы не знаем, что это такое. Является ли '$ scope. $ On ('practiceInfo'' firing? – charlietfl