angular控制器来检索JSON数据

在这里,我实际上是试图获取json数据,并使用angular度控制器将它们显示在一个玉石模板上。

控制器: processJson.js

var getJson = angular.module('getJson', []).controller('controller1', function ($scope, $http) { var url = '/fields/fieldlist'; console.log(url); $http.get(url).success(function (data) { $scope.posts = data; }); }); 

这不会parsingjson数组到jade模板

fields.js

 var express=require('express'); var router =express.Router(); router.get('/fieldlist',function(req,res){ var db=req.db; var collection=db.get('domlist'); collection.find({},{},function(e,docs){ res.json(docs); }); }); module.exports=router; 

这成功返回一个json数组对象。

这是我的玉模板

 html head body div(ng-app='getJson') div(ng-controller='controller1') div(ng-repeat='post in posts') div(ng-switch-when='text') input(type='text' id='{{post.id}}' ng-model='post.value' placeholder='{{post.placeholder}}') block content 

这里有几件事情:

不要在你的控制器中使用$ http。 Ajax请求和一般数据发送/检索应该放在服务器或工厂中,并注入到控制器中。

在这种情况下,您应该考虑编写一个包含getFields()方法的fieldService并从您的控制器调用它。

由于我非常怀疑这是你的问题的原因,所以我要指出在你的例子中,

  • 如果使用$ http,则很容易产生令人头痛的问题,如果没有问题的话。 您可能会对$ http的文档感兴趣,它解释了最常用的使用方法。 还要考虑在您的请求中捕获错误,以防万一出错,并阻止显示您的数据。

  • 在你的模板中,你正在使用一个ng-switch-when属性而没有任何父母的ng-switch。 当然,我不是专家,但我不确定这是否会奏效。 如果你想让你的div在“文本”真实时显示,可以考虑使用ng-if或者ng-show,或者在你的ng-repeat中使用一个filter。

  • 我还假设“文本”是你忘记放在你的例子中的范围variables。

  • 你的url在你的例子中都不一样,你确定它们都是正确的吗?

我没有时间尝试重现您的问题,对不起。 我希望至less有一点可以帮助你理解你做错了什么。

要testing您的解决scheme,请考虑将其分解为单独的可testing组件。 经常使用硬编码JSON提供的ng-initangular度指令可以揭示问题和不正确的假设。

这是一个关于ng-init的SO问题….

SO ng-init-json-object