私が書いている小さなアプリに複数のコントローラーがあり、そのようにコントローラー間で「選択された」変数を正常に共有しました。
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();
}
}
メイン コンテンツ エリア用に 3 つ目のコントローラーがありますが、ここで何をすべきかわかりません。選択した従業員からの情報を表示したいのですが、Angular は最初の従業員が選択済みとして設定される前にページ全体をコンパイルしており、その後の従業員の選択はメイン コンテンツ ページをリロードしていません (私が持っているため) t は彼らに言ったと思います)。これが私のメインコンテンツコントローラーです:
app.controller('mainContentController', ['$scope','selectedEmployee',
function ($scope, selectedEmployee) {
$scope.selected = selectedEmployee.getSelected();
console.log($scope.selected);
}
]);
現在、メイン コンテンツ ビューは非常にシンプルです
<h2>{{selected.firstName}}{{selected.lastName}}</h2>
私の質問は、従業員を選択したときに情報が表示されるように、部分ビューを効果的に更新するように 1 つのコントローラーに指示する方法です。