ui-routerとcontrollerAsの構文を使用して子状態に親状態の関数を渡す方法を知りたいので、親。ControllerAs構文を使用して親状態関数を呼び出すには、角度ui-router子状態が必要です
リストをクリックすると、リストをクリックすると、子ステートの詳細をロードします。子を更新すると、親ステートの関数を使用してリストを更新/更新します。
私はここでそれについてplunkrを作った: https://plnkr.co/edit/rRkibROTrXhkFSCuzcSb?p=preview
.state('home.users', {
url: '/users',
templateUrl: 'users.html',
controller: function() {
this.users = [
{ id: 1, name: 'User1'},
{ id: 2, name: 'User2'},
{ id: 3, name: 'User3'}];
this.lastUpdated = new Date();
this.updateList= function() {
this.lastUpdated = new Date();
}
},
controllerAs: 'usersVm' })
.state('home.users.details', {
url: '/:id',
templateUrl: 'usersdetails.html',
controller: function() {
this.user = { id: 1, name: 'Users1' };
this.update = function() {
// update parent scope list here
// usersVm.updateList();
// $scope.$parent.usersVm.updateList()
}
},
controllerAs: 'usersDetailsVm'
});
エラーが表示される場合は:Home.users.details.1をクリックし、[保存]をクリックします。保存ボタンを親リストを更新する親関数を呼びたいと思います。私はどこでも$スコープを使わずに動作させることができませんでした(私は避けようとしています)。
私はこの間違ったことを考えていますか?私は別の方法でそれをしなければならない?
ありがとうございました。
$ scope(と$ scope。$ parent)を使用するように設定されていますが、どちらの状態間でもリストを共有するためにサービスをどのように使用するのかはわかりません(つまり、子状態はリストを更新し、親スコープはそのリストは$ digestで更新されますか?) – wanderinghealer
サービスはリストを保存し、それを更新して取得する機能を持っています。両方のコントローラでDIを使用すると、このサービスが組み込まれます。 –
ありがとうございます! – wanderinghealer