将对象从一个控制器传递到另一个AngularJS

时间:2017-08-20 18:24:44

标签: angularjs

我需要将一个对象从一个控制器传递到另一个控制器并使用this解决方案,但它无效。

这里是代码:

angular.module("customerApp", [])
.controller('MainCtrl', function ($scope, myService, $http, $location) {
    var vm = this;
    vm.pinFormCheck = function () {
        vm.count++;
        if (vm.pinForm.$valid && vm.details.PIN === vm.pin && vm.count <= 2) {
            location.href = "http://localhost:51701/Home/MainMenu";
            $scope.obj = {
                'cid': 'vm.details.CID',
                'name': 'vm.details.Name',
                'pin': 'vm.details.PIN',
                'bal': 'vm.details.Bal',
                'status': 'vm.details.cardStatus'

            };
            console.log(vm.details.Bal);//the correct balance get displayed in console
        } else {
            vm.failPin = true;
        }
    };
})

.controller('CheckCtrl', function ($scope, myService) {
    $scope.data = myService.getObj();
})

.factory('myService', function () {
    var obj = null;
    return {
        getObj: function () {
            return obj;
        },
        setObj: function (value) {
            obj = value;
        }
    }
});

以下是传递第一个对象的视图:

<body ng-app="customerApp">
    <div ng-controller="MainCtrl as vm">
        <form name="vm.pinForm">
            <input type="password" ng-model="vm.pin" ng-required="true" />
            <p><button ng-disabled="vm.count >=3" ng-click="vm.pinFormCheck();" ng-init="vm.count=0">Proceed</button></p>
                    </form>
                    ...

这是'我需要对象的第二个视图

<html ng-app="customerApp">
    <body ng-controller="CheckCtrl">
        <div>
            <h1>your balance is {{data.bal}}</h1>
            ....

第一个视图中vm.details.Bal的余额必须显示在第二个视图的data.bal中,但不会显示任何内容。

1 个答案:

答案 0 :(得分:0)

您可以在某些工厂中保存vm.details。 然后从这家工厂的CheckCtrl获取它。 AngularJS中的工厂实现单例模式。因此,保存的数据将保留在您的应用程序存在之前。

您尝试做下一件事myService.getObj();但是您没有向服务保存任何内容。

myService注入MainCtrl,然后将详细信息保存到其中。