我正在编写的一个小应用程序上有多个控制器,并且我已经成功地在控制器之间共享了一个“选定”变量,就像这样。
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>
我的问题是如何告诉一个控制器有效地更新其部分视图,以便在我选择一名员工时显示信息。