雖然網上歸納了四種或更多的傳值方式,但我如今用的順手的就兩種app
首先要知道AngularJs能夠構建一個單頁面應用程序,因此我劃分爲跨控制器傳值 和 跨頁面傳值 兩類spa
一、跨控制器傳值—— $rootScoperest
原理:全部的應用都有一個 $rootScope,它能夠做用在 ng-app 指令包含的全部 HTML 元素中。code
$rootScope 可做用於整個應用中。是各個 controller 中 scope 的橋樑。用 rootscope 定義的值,能夠在各個 controller 中使用對象
應用:因此在跨控制器傳值時候就能夠用$rootScopeblog
案例:好比我要把控制器ControllerA中的對象,點擊事件ToB()要轉入ControllerB中調用事件
注:要注入$rootScopeit
1 app.controller('ControllerA', function ($scope, $rootScope) { 2 $scope.ToB=function(){ 3 $rootScope.Model=$scope.Model; 4 } 5 });
1 app.controller('ControllerB', function ($scope, $rootScope) { 2 $scope.ModelB=$rootScope.Model; 3 }); io
缺點:只要刷新頁面$rootScope的值就不存在了function
二、用地址Url傳值——用$location得到地址欄裏的參數
注:要注入$location
案例1:在頁面A的Controller中
1 $scope.goLog = function (orderServiceId) { 2 window.location.href = "#/serviceLogs?orderServiceId=" + orderServiceId; 3 }
在頁面B中
1 var orderServiceId = parseInt($location.search().orderServiceId);
能夠用restFul風格的路徑
案例2:在頁面A的控制器中
注:要注入$routeParams
1 $scope.edit = function (role) { 2 window.location.href = "#/roles/" + role.RoleID + "/edit"; 3 }
在接受參數B控制器中
1 var roleID = parseInt($routeParams.id);
注:僅我的理解及筆記,有錯誤的地方請各位指正!