2017-08-20 23 views
0

あるコントローラから別のコントローラにオブジェクトを渡す必要があり、thisソリューションを使用しましたが、動作しません。ここあるコントローラから別のコントローラへオブジェクトを渡すAngularJS

コード:ここ

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; 
     } 
    } 
}); 

は、第1の目的は、通過された図である:ここ

<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> 
        ... 

」私はオブジェクトを必要と第2のビュー

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

最初のビューからの残高vm.details.Balは、data.balに表示する必要があります。 2番目のビューは表示されますが、何も表示されません。

+1

サービスデータは、ページの読み込み間で保持されません。 [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)を使用するか、[SPA](https://en.wikipedia.org/wiki/Single)を作成することを検討してください。 -page_application)を[ngRoute](https://stackoverflow.com/tags/ngroute/info)や[UI Router](https://stackoverflow.com/tags/angular-ui-router/info)などのルータと組み合わせると、 。 – georgeawg

答えて

0

vm.detailsは一部の工場で保存できます。 そして、この工場からCheckCtrlを入手してください。 AngularJSのファクトリはシングルトンパターンを実装しています。保存されたデータは、アプリが存在するまで保持されます。

あなたは次のことをしようとしましたmyService.getObj();あなたはサービスに何も保存しませんでした。

myServiceからMainCtrlを入力し、詳細を保存します。

関連する問題