首頁  >  文章  >  web前端  >  如何在沒有服務的情況下在 AngularJS UI-Router 中的狀態之間共享 $scope 資料?

如何在沒有服務的情況下在 AngularJS UI-Router 中的狀態之間共享 $scope 資料?

Susan Sarandon
Susan Sarandon原創
2024-11-23 05:16:09367瀏覽

How to Share $scope Data Between States in AngularJS UI-Router Without Services?

在AngularJS UI-Router 中的狀態之間共享$scope 資料

在使用UI-Router 進行狀態管理的AngularJS 應用程式中,可能存在需要在父狀態和子狀態之間共用$scope 資料。在不使用服務或複雜的觀察者的情況下,我們如何實現這一目標?

利用視圖層次結構繼承

AngularJS UI-Router 僅當子視圖時才提供範圍屬性的繼承嵌套在父視圖中。這意味著子狀態的模板必須嵌套在父視圖的模板中。

例如,考慮以下狀態定義:

.state("main", {
 controller:'mainController',
 url:"/main",
 templateUrl: "main_init.html"
})  
.state("main.1", {
 controller:'mainController',
 parent: 'main',
 url:"/1",
 templateUrl: 'form_1.html'
})  
.state("main.2", {
 controller:'mainController',
 parent: 'main',
 url: "/2",
 templateUrl: 'form_2.html'
})  

在這種情況下,子視圖的視圖子狀態(“form_1.html”和“form_2.html”)嵌套在在父狀態(“main_init.html”)的視圖中。這使得 $scope 屬性從父狀態繼承到子狀態。

使用引用類型和點表示法

為了確保資料共享,使用點表示法在父控制器的 $scope 中定義引用類型至關重要。例如:

controller('mainController', function ($scope) {
  $scope.Model = $scope.Model || {Name : "xxx"};
})

透過使用點表示法,我們確保 $scope.Model 是引用型別。在子狀態下存取時,將與父狀態下建立的 $scope.Model 實例相同,方便資料共用。

範例

範例中問題中提供的主控制器和子狀態已正確設定以進行範圍繼承。問題在於點符號的使用不當。透過修改子狀態下的ng-model引用$scope.Model.Name,即可建立資料共享。

以上是如何在沒有服務的情況下在 AngularJS UI-Router 中的狀態之間共享 $scope 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn