2016-07-07 94 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

相關問題