2015-08-12 2 views
1

Здесь я на самом деле пытаюсь получить данные json и отображать их на шаблоне нефрита с использованием углового контроллера.Угловой контроллер для получения данных 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 массив шаблон нефрита

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

Чтобы проверить ваше решение рассмотреть разбить его на отдельные проверяемые компоненты. Часто использование угловой директивы ng-init, поставляемой с жестко закодированным JSON, может выявить проблемы и неправильные предположения.

Вот так вопрос на нг-INIT ....

SO ng-init-json-object

4

Несколько вещей здесь:

Не используйте $ HTTP в контроллере. Запросы Ajax и отправка/извлечение общих данных должны выполняться в сервисе или на заводе, который вы вводите в контроллер.

В этом случае вы должны рассмотреть возможность кодирования fieldService, содержащего метод getFields(), и вызывать его с вашего контроллера.

Поскольку я очень сомневаюсь, что это является причиной вашей проблемы, я хочу отметить, что меня прослушивают в ваших примерах:

  • Ваше использование $ HTTP склонен к много головной боли, если вообще не ошибаюсь. Вас может заинтересовать $http's documentation, в котором объясняются наиболее рекомендуемые способы его использования. Также обратите внимание на ошибки при поиске на ваших запросах, на случай, если что-то пойдет не так и предотвратит отображение ваших данных.

  • В вашем шаблоне используется атрибут ng-switch-when без какого-либо родительского ng-переключателя. Конечно, я не эксперт, но я не уверен, что это сработает. Если вы хотите, чтобы ваш div показывал, когда текст является правдивым, подумайте об использовании ng-if или ng-show или даже фильтра в ng-repeat.

  • Я также предполагаю, что «текст» - это переменная области, которую вы забыли положить в свой пример.

  • Ваш адрес не совпадает с вашим примером, вы уверены, что они оба правильные?

У меня нет времени, чтобы попытаться воспроизвести вашу проблему, извините. Я надеюсь, что хотя бы один из этих пунктов поможет вам понять, что вы сделали неправильно.

Смежные вопросы