У меня есть несколько контроллеров в небольшом приложении, которое я пишу, и я успешно поделился «выбранной» переменной между контроллерами.
app.service('selectedEmployee', function () {
var selected = null;
return
{
getSelected: function() {
return selected;
},
postSelected: function(employee) {
selected = employee;
}
};
});
У меня есть боковая панель навигации со списком сотрудников. Когда я нажимаю на сотрудника, я вызываю функцию postSelected, а затем getSelected для установки $scope.selected.
$scope.selectEmployee = function(employee) {
//Calling Service function postSelected
selectedEmployee.postSelected(employee);
$scope.selected = selectedEmployee.getSelected();
if ($mdSidenav('left').isOpen()) {
$mdSidenav('left').close();
}
}
У меня есть третий контроллер для области основного контента, и здесь я не понимаю, что делать. Я хочу, чтобы информация от выбранного сотрудника отображалась, но angular компилирует всю страницу до того, как первый сотрудник сможет быть установлен как выбранный, а последующие выборы сотрудника не перезагружают страницу основного контента (потому что я не т сказал им, я думаю). Вот мой основной контроллер контента:
app.controller('mainContentController', ['$scope','selectedEmployee',
function ($scope, selectedEmployee) {
$scope.selected = selectedEmployee.getSelected();
console.log($scope.selected);
}
]);
Мое основное представление контента сейчас очень простое
<h2>{{selected.firstName}}{{selected.lastName}}</h2>
Мой вопрос заключается в том, как я могу сказать одному контроллеру эффективно обновлять свое частичное представление, чтобы при выборе сотрудника он отображал информацию.
$scope.$applyAsync(...)
вокруг тела вашей функции вmainContentController
. Возможно, если ему нужен только один цикл дайджеста для достижения контроллера, это должно решить проблему. - person sg.cc   schedule 07.05.2016