这里我实际上是在尝试获取 json 数据并使用 Angular Controller 将它们显示在 jade 模板上。
Controller : 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 模板
字段.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数组对象。
这是我的 Jade 模板
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
最佳答案
这里有几件事:
不要在 Controller 中使用 $http。 Ajax 请求和一般数据发送/检索应该进入您注入(inject) Controller 的服务或工厂。
在这种情况下,您应该考虑编写一个包含 getFields() 方法的 fieldService 并从您的 Controller 调用它。
由于我高度怀疑这是您问题的原因,我将指出您的示例中的问题:
您对 $http 的使用很容易让人头疼,如果没有错误的话。您可能对 $http's documentation 感兴趣,其中解释了最推荐的使用方法。还要考虑捕获请求中的错误,以防出现任何问题并阻止显示数据。
在您的模板中,您使用的是 ng-switch-when 属性,而没有任何父 ng-switch。我当然不是专家,但我不确定它是否会起作用。如果您希望您的 div 在“文本”为真时显示,请考虑使用 ng-if 或 ng-show,甚至在您的 ng-repeat 中使用过滤器。
我还假设“文本”是您忘记放入示例中的范围变量。
您的 url 在两个示例中都不相同,您确定它们都是正确的吗?
抱歉,我没有时间尝试重现您的问题。我希望至少其中的一点可以帮助您了解您做错了什么。
关于javascript - 用于检索 json 数据的 Angular Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31962635/