我需要将一个对象从一个控制器传递到另一个控制器并使用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
中,但不会显示任何内容。
答案 0 :(得分:0)
您可以在某些工厂中保存vm.details。
然后从这家工厂的CheckCtrl
获取它。
AngularJS中的工厂实现单例模式。因此,保存的数据将保留在您的应用程序存在之前。
您尝试做下一件事myService.getObj();
但是您没有向服务保存任何内容。
将myService
注入MainCtrl
,然后将详细信息保存到其中。