2016-07-07 98 views
1

我已经看到了堆栈溢出的各种帖子,我试图流动,但在创建下面的服务时我正在做的一些错误是我的代码善意帮助我找出在哪里我做错了如何将数据从一个控制器传递到AngularJs中的其他控制器

angular 
 
.module('yolomd', ['ngSanitize']); 
 
app.factory('myplacementdata', function() { 
 
    var mydata = { 
 

 
     placementdata = [], 
 
     getplacementdataValue:function() { 
 
     return mydata.placementdata; 
 
     }, 
 
     setplacementdataValue: function (data) { 
 
     mydata.placementdata = data; 
 
     } 
 
    } 
 
    return mydata; 
 
}); 
 

 
app.controller('PriorityPlacement',['$scope', '$rootScope','myplacementdata', function($scope, $rootScope,myplacementdata){ 
 
    var response.Data=[{city_name: "Toronto", city_placement_charge: "1799"}, yolomd_verify: "50"]; 
 
    myplacementdata.setplacementdataValue=response.Data; 
 
    console.log(myplacementdata.getplacementdataValue); 
 
    //window.location = site_url + 'Overview' 
 
    }]); 
 
app.controller('Overview',['$scope', '$rootScope','$stateParams','myplacementdata', function($scope, $rootScope,myplacementdata){ 
 
    console.log(myplacementdata.getplacementdataValue); 
 
    }])
<html lang="en" ng-app="yolomd"> 
 
<head> 
 
    <script src="http://205.134.251.196/~examin8/CI/yoloMD/assets/front/js/vendor/angular.min.js"></script> 
 
    </head>

回答

1

请注意:

setplacementdataValue() 
getplacementdataValue() 

这些方法,而不是变量。

所以用它们为:

setplacementdataValue([Your Array Input]); 
console.log(getplacementdataValue()); 

注意括号。

同样在你设置的方法中,使用不同的输入参数名称。

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

 
app.controller('PriorityPlacement', ['myplacementdata', 
 
    function(myplacementdata) { 
 
    myplacementdata.setplacementdataValue([1, 2, 3]); 
 
    console.log(myplacementdata.getplacementdataValue()); 
 
    } 
 
]); 
 

 
app.controller('Overview', ['myplacementdata', 
 
    function(myplacementdata) { 
 
    console.log(myplacementdata.getplacementdataValue()); 
 
    } 
 
]); 
 

 
app.service('myplacementdata', function() { 
 
    var placementdata = []; 
 
    this.getplacementdataValue = function() { 
 
    return placementdata; 
 
    } 
 
    this.setplacementdataValue = function(myplacementdata) { 
 
    placementdata = myplacementdata; 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp"> 
 
    <div ng-controller="PriorityPlacement"> 
 
    </div> 
 
    <div ng-controller="Overview"> 
 
    </div> 
 
</div>

+0

在第二个控制器上它给错误 - angular.js:12520 TypeError:无法读取属性'getplacementdataValue'undefined –

+0

你可以创建一个jsfiddle或plunkr吗? –

+0

在第二个控制器上它给错误 - 无法读取undefined的属性'getplacementdataValue' –

1

首先尝试改变

myplacementdata.setplacementdataValue=response.Data; 

myplacementdata.setplacementdataValue(response.Data); 

你从哪里得到response.Data?

尝试使用工厂代替。像这样。

app.factory('myplacementdata', function() { 
    var mydata = { 

     placementdata = [], 
     getplacementdataValue:function() { 
     return mydata.placementdata; 
     }, 
     setplacementdataValue: function (data) { 
     mydata.placementdata = data; 
     } 
    } 
    return mydata; 
}); 
+0

对于有一个Ajax请求 –

+0

做了相同的控制器没有响应时,我完成CONSOLE.LOG(myplacementdata.getplacementdataValue);在设置 –

+0

更新后我的答案检查出来。 – Palm

相关问题