【发布时间】:2014-02-22 00:35:18
【问题描述】:
正如你将看到的,我在 AngularJS、JS 和 Web 开发方面都是新手 =) 对此我感到非常抱歉,但我会尝试这样做。
我尝试使用 AngularJS 控制器构建一个庞大的网络表单(大约 200 个不同的字段)。我需要从控制器访问根数据源。 AngularJS 团队要求不要仅仅为存储数据提供服务,但我想为加载和保存数据提供服务(在服务器上的 .json 文件中开始)。
服务:
AppName.factory('MasterData', ['$rootScope', '$http', '$q', '$log',
function($rootScope, $http, $q, $log) {
var responseData;
$http.get('/getdata.php').then(function (response) {
responseData = response.data;
console.log(response.data);
});
return responseData;
}]);
控制器:
AppName.controller('justController', ['$scope', 'MasterData', '$log',
function ($scope, MasterData, $log) {
$scope.data = MasterData.justControllerSectionData;
console.log(MasterData);
}
]);
控制器返回未定义。但是来自服务的 console.log 会返回该对象。 我觉得问题太简单了,但我找不到解决方法:( 此外,我不能使用从控制器到服务的 .getData() 之类的功能,因为每次加载任何控制器时它都会从服务器询问数据。我在 AngularJS 应用程序中有 12-14 个控制器的路由(完整的网络表单按部分划分),我认为从后端获取数据一次是件好事。
附:我认为承诺存在问题,但是当我尝试使用这样的代码时:
var defer = $q.defer();
$http.get('/getdata.php').success(function(data){
defer.resolve(data);
});
return defer;
我有解决、拒绝等的对象。真的不明白我能用它做什么:(
帮我获取控制器中的数据:)
【问题讨论】:
-
包含 200 个字段的表单?使用Meteor and autoform:
{{> quickForm collection="Books" id="insertBookForm" type="insert"}}可能会更好
标签: javascript json angularjs