我有一个我认为很明显的问题,但我在任何地方都找不到答案
我只是尝试将一些JSON数据从服务器加载到客户端。现在,我使用JQuery通过AJAX调用加载它(下面的代码)
<;script type=“text/javascript”>;
var global=新数组();
$.ajax({
url:“/json”,
成功:功能(报告){
全球=报告;
回归全球;
}
});
</脚本>;
这位于html文件中。到目前为止,它仍然有效,但问题是我想使用AngularJS。现在,虽然Angular可以使用变量,但我不能将整个内容加载到一个变量中,所以我可以为每个循环使用一个。这似乎与“$Scope”有关,它通常位于.js文件中
问题是我无法将其他页面的代码加载到.js文件中。每个Angular的示例都只显示如下内容:
函数TodoCtrl($scope){
$scope.todos=[
{text:’learn angular’,done:true},
{text:’buildanangular应用程序’,done:false}];
所以,这是有用的,如果我
A) 要手动键入所有这些,并且
B) 如果我事先知道我所有的数据是什么
我事先不知道(数据是动态的),我不想键入它
因此,当我尝试使用$Resource将AJAX调用更改为Angular时,它似乎不起作用。也许我无法理解,但它是一个相对简单的JSON数据GET请求
tl:dr我无法让AJAX调用工作,以便将外部数据加载到角度模型中。
正如Kris提到的,您可以使用$resource服务与服务器进行交互,但我觉得您是从Angular开始您的旅程的-我上周就在那里-因此我建议开始直接使用$http服务进行试验。在这种情况下,您可以调用它的get方法
如果您有以下JSON
[{“text”:“learn angular”,“done”:true},
{“text”:“构建角度应用程序”,“完成”:false},
{“text”:“something”,“done”:false},
{“文本”:“另一个待办事项”,“完成”:true}]
你可以这样加载它
var-App=angular.module('App',[]);
App.controller('TodoCtrl',函数($scope,$http){
$http.get('todos.json')
.然后(功能(res){
$scope.todos=res.data;
});
});
get方法返回一个promise对象,该对象
第一个参数是成功回调,第二个参数是错误
回拨
当您将$http添加为函数的参数时,它是否具有魔力
并将$http资源注入控制器
我在这里举了一些例子
- http://plnkr.co/edit/Wuc6M7?p=preview
- https://gist.github.com/3938567