如何将值从一个视图传递到角度js中的另一个视图?

时间:2016-10-21 07:19:29

标签: angularjs

我想将我的第一个视图文本框值传递给另一个视图文本框。 并且这两个视图都使用不同的控制器。

<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <title></title>
</head>
<body>
    <div ng-view="">

    </div>
</body>
</html>


<script src="../Scripts/angular.min.js"></script>
<script src="../Scripts/angular-route.min.js"></script>
<script src="../Scripts/routeApp.js"></script>
<script src="../Scripts/Controller.js"></script>

这是我将加载View1和view2 HTML文件的主页面。

&#34;视图1&#34;

<div>
    <input type="text" name="fname" value="" ng-model="fname" />
    <a href="#/View2" >Link</a>
</div>

&#34;视图2&#34;

<div>
    <input type="text" name="fname" value="" ng-model="fname" />
</div>

&#34; routeApp.js&#34;

var myApp = angular.module('myApp', ['ngRoute', 'yourApp']);
debugger
myApp.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
    .when('/',
    {
        templateUrl: 'View1.html',
        controller: 'View1'
    }).
    when('/View2',
    {
        templateUrl: 'View2.html',
        controller: 'View2'
    }).
    otherwise(
    {
        redirectTo: '/'
    });
}]);

&#34; Controller.js&#34;

var yourApp = angular.module("yourApp",[]);

yourApp.controller("View1", function ($rootScope, $scope) {
    debugger;
    $rootScope.abc = $scope.fname;
});

yourApp.controller("View2", function ($rootScope, $scope) {
    debugger;
    $scope.fname = $rootScope.abc;
});

我的电话是来到控制器,但我知道我犯了一个错误,因为我没有在View2.html页面上获得我的价值。

2 个答案:

答案 0 :(得分:0)

在分配$rootScope.abc = $scope.fname时,$scope.fname的值为undefined。您需要在更改状态之前保存该值。您可以使用 $ destroy 事件来实现它:

$scope.$on("$destroy", function(){
   $rootScope.abc = $scope.fname;
});

Click here to view in Plunker

答案 1 :(得分:0)

“Controlle.js”的变化,现在它对我来说很好......

var yourApp = angular.module("yourApp",[]);

yourApp.controller("View1", function ($rootScope, $scope, $window) {
    debugger;
    $rootScope.abc = $scope.fname;

    $scope.shareData = function () {
        debugger;
        $rootScope.abc = $scope.fname;
        $window.location.href = "#/View2";
    }
});

yourApp.controller("View2", function ($rootScope, $scope, $window) {
    debugger;
    $scope.fname = $rootScope.abc;
});