Angular控制器检索json数据

时间:2015-08-12 10:30:52

标签: javascript json angularjs node.js

这里我实际上试图获取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

2 个答案:

答案 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问题....

SO ng-init-json-object