这里我实际上试图获取json数据并使用角度控制器在玉石模板上显示它们。
控制器: 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
答案 0 :(得分:4)
这里有几件事:
不要在你的控制器中使用$ http。 Ajax请求和一般数据发送/检索应该放在您注入控制器的服务或工厂中。
在这种情况下,您应该考虑编写包含getFields()方法的fieldService并从控制器调用它。
由于我非常怀疑这是你问题的原因,所以我要指出你的例子中有什么问题:
如果没有错误,你使用$ http会产生很多麻烦。您可能对$http's documentation感兴趣,这解释了最常用的使用方法。另外,请考虑在您的请求中捕获错误,以防万一出现问题并阻止您的数据显示。
在您的模板中,您使用的ng-switch-when属性没有任何父ng-switch。我当然不是专家,但我不确定它是否会起作用。如果你希望你的div显示何时发短信'是真的,考虑使用ng-if或ng-show,甚至是ng-repeat中的过滤器。
我还假设'文字'是您忘记放在示例中的范围变量。
您的网址中的网址不一样,您确定它们都是正确的吗?
我没有时间尝试重现您的问题,抱歉。我希望至少有一点可以帮助你理解你做错了什么。
答案 1 :(得分:0)
要测试您的解决方案,请考虑将其分解为单独的可测试组件。经常使用硬编码JSON提供的ng-init角度指令可以揭示问题和不正确的假设。
这是关于ng-init的SO问题....