angularJs 跨控制器与跨页面传值

虽然网上归纳了四种或更多的传值方式,但我如今用的顺手的就两种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);

 

 

注:仅我的理解及笔记,有错误的地方请各位指正!

相关文章
相关标签/搜索