Angular控制器来检索json数据
Angular controller to retrieve json data
这里我实际上是在尝试获取json数据,并使用angular控制器将它们显示在jade模板上。
控制器: 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;
});
});
这不会解析json数组到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的ng-switch-when属性。当然,我不是专家,但我不确定这是否有效。如果你想让div显示当'text'为真值时,可以考虑使用ng-if或ng-show,甚至在ng-repeat中使用过滤器。
-
我也假设'text'是一个你忘记放在你的例子中的作用域变量。
-
你的url在你的两个例子中都不一样,你确定它们都是正确的吗?
我没有时间尝试重现您的问题,对不起。我希望这些要点中至少有一点可以帮助您了解自己做错了什么。
要测试您的解决方案,请考虑将其分解为单独的可测试组件。经常使用硬编码JSON提供的ng-init angular指令可能会暴露出问题和错误的假设。
这是一个关于ng-init的SO问题....
所以ng-init-json-object
- 如何将JSON数据导入我的ejs模板
- 如何将json数据显示为html
- Json数据包含日期和时间格式
- 用我的json数据填充JQuery DataTable
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 使用jquery读取Json数据
- 如何将本地json数据加载到Extjs数据模型中
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- React-将jSON数据传递给子组件的子组件
- 尝试从控制器加载带有json数据的Simile时间线
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 如何通过数据分组将json数据转换为嵌套的json数据格式
- 如何在ReactJs中显示Json数据
- 使用javascript进行JSON数据检索
- tu如何将id放在填充了json数据的html表td上
- 将JSON数据从服务器加载到knockout.jsobservable中
- 使用JavaScript处理JSON数据
- 如何将json数据传递到.js文件
- 如何在带有nunjucks和gullow数据的JSON数据中使用带有HTML的内容
- 如何使用var名称调用JSON数据