1
我想知道如何將父狀態的函數傳遞給使用ui-router和controllerAs語法的孩子,所以我可以調用一個函數家長。需要角ui路由器的子狀態使用controllerAs語法調用父狀態函數
一個例子是我有一個列表的視圖,當我點擊列表時,它加載子狀態的詳細信息,在更新孩子時,使用父狀態上的函數更新/刷新列表。
我做了一個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(和$ scope。$ parent),我不確定我將如何使用服務在兩種狀態之間共享列表(即;子狀態將更新列表並且父範圍綁定到該列表並獲得更新$摘要?)? – wanderinghealer
服務將存儲該列表,並具有更新它並獲取它的功能。在兩個控制器中使用DI,您將包含此服務。 –
謝謝,會這樣做! – wanderinghealer