![](/img/trans.png)
[英]how to pass login data from one controller to another other than using rootscope, in angularjs
[英]Pass JSON data from one controller to other angularjs
我有一個登錄服務,該服務向我提供JSON對象作為具有用戶詳細信息的響應。 現在,在此響應中,有一個名為權限的對象,該對象向我提供了有關允許用戶使用的CRUD權限的信息。
看起來像這樣:
現在我有不同的頁面,每個頁面都有一個表格。 我想要的是檢查登錄用戶的權限,並根據顯示/隱藏元素從表中創建/讀取/更新/刪除記錄。
我目前正在做的是將對象保存到數組中:
$scope.permissionArry = [];
for (var i = 0; i < data.permissions.length; i++) {
$scope.permissionArry.push({
moduleId: data.permissions[i].module_id,
createModule: data.permissions[i].create_module,
readModule: data.permissions[i].read_module,
updateModule: data.permissions[i].update_module,
deleteModule: data.permissions[i].delete_module
});
}
然后嘗試將此數組傳遞給其他控制器。
我們知道我們不能在服務/工廠中通過$ scope,我不知道如何進行操作(我不想使用$ rootScope)。
這是有關學習如何通過工廠或服務在兩個控制器之間傳遞數據的問題。 您不需要傳遞$ scope變量,因為您應該將數據綁定到工廠中的對象。
這是一個簡單的示例:
控制器1
myApp.controller('Ctrl1', ['$scope', 'myFactory', function($scope, myFactory){
myFactory.data = someFunctionThatChangesTheData();
}]);
控制器2
myApp.controller('Ctrl2', ['$scope', 'myFactory', function($scope, myFactory){
$scope.data = myFactory.data;
}]);
最后是你的工廠
myApp.factory('myFactory', function(){
return {
data: {
value: 'some data'
}
}
});
然后,您可以在視圖中使用來自控制器2的數據:
查看2 (已分配Ctrl2)
<div>
<h1>View 2</h1>
<p>{{data.value}}</p>
</div>
您需要使用服務來實現此目標非常簡單:
可以找到示例鏈接
MyApp.app.service("xxxSvc", function () {
var _xxx = {};
return {
getXxx: function () {
return _xxx;
},
setXxx: function (value) {
_xxx = value;
}
};
});
我遇到了同樣的問題。 我使用的解決方案不那么討人喜歡,或者我想必須使用更好的方法使用角度服務或工廠來做到這一點(我對此一無所知)。
我使用的解決方案是使用HTML5的sessionStorage或localStorage。 我知道這不是做事的有角度的方法,但是它將完成工作。
在控制器1中
sessionStorage.setItem('permissions', JSON.stringify($scope.permissionArry));
並將其放入控制器2中
$scope.permissions = JSON.parse(sessionStorage.getItem('permissions'));
我個人認為,必須有比這更好的解決方案,並且您應該考慮學習角度工廠或服務以解決問題。 但是與此同時,您可以使用此解決方案快速解決問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.