我开始在AngularJS开发.我很困惑这是否是在我的部分视图之间传递数据的正确设计.
现在我有一个加载页面,我做了一些请求.
function PeopleController($scope,$http,$location){
$http.get('/location/-79.18925/43.77596').
success(function(data){
$scope.savePeopleResponse(data);
$location.url('/test');
});
}
Run Code Online (Sandbox Code Playgroud)
然后在为/ test加载的视图中
我只是打电话
<div ng-controller="resultController">
<div class="blueitem">{{getResultForPeople()|json}}</div>
</div>
Run Code Online (Sandbox Code Playgroud)
[resultController]
function resultController($scope){
$scope.getResultForPeople = function(){
return $scope.getPeopleResponse();
}
}
Run Code Online (Sandbox Code Playgroud)
并且rootPcope中的savePeopleResponse和getResultForPeople被"缓存"
app.run(function($rootScope) {
var peopleResponse = {};
$rootScope.savePeopleResponse = function(data) {
peopleResponse = data;
console.log(data);
}
$rootScope.getPeopleResponse = function(){
return peopleResponse;
}
});
Run Code Online (Sandbox Code Playgroud)
现在你可以看到,如果这个应用程序变得越来越大,这将变得非常混乱.处理数据的最佳方法是什么,以便它跨控制器持续存在?
Glo*_*opy 55
您可以通过创建自己的服务来跨控制器持久保存数据,如本博客中所述.您也可以参考这个问题.
你的情况,你可以将你savePeopleResponse和getPeopleResponse成服务,然后注入服务为您想访问任何控制器.
angular.module('myApp', [])
.factory('peopleService', function () {
var peopleResponse = {};
return {
savePeopleResponse:function (data) {
peopleResponse = data;
console.log(data);
},
getPeopleResponse:function () {
return peopleResponse;
}
};
});
Run Code Online (Sandbox Code Playgroud)
你的控制器是这样的:
function resultController ($scope, peopleService) {
$scope.getResultForPeople = peopleService.getPeopleResponse;
}
Run Code Online (Sandbox Code Playgroud)
使用此代码示例,请确保包含 ng-app="myApp"
| 归档时间: |
|
| 查看次数: |
43123 次 |
| 最近记录: |