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