Как я могу использовать AngularJS и serializeJSON cfquery

Я пытаюсь взглянуть на AngularJS, cf backend

У меня есть следующий код, который тянет обычный cfquery с именем getIndex, который вытягивает пять строк столбцов каждый (firstName, lastName)

var theQuery = <cfoutput>#serializeJSON(getIndex,true)#</cfoutput>;
        var theData = theQuery.DATA

        function dataLooper($scope){
            $scope.people = theData;
            console.log($scope.people);
        }

консольный журнал выдает

Объект { FIRSTNAME=[5], LASTNAME=[5]}

мой HTML выглядит

<div ng-controller="dataLooper">
          <div ng-repeat="person in people">
          {{person}} - {{person.FIRSTNAME}}<br>
          </div>
</div>

который производит

    ["Yasteel","Kyleigh","Gary","Nick","Kerry-Leigh"] -
["Si","No","Ho","Ga","Gr"] - 

Очевидно, я что-то упускаю, потому что это совсем не то, что я ожидал. Я предполагаю, что это потому, что AngularJS ищет Arrray вместо объекта. Я не уверен, но я надеялся, что serializeJSON даст мне некоторый тип используемого объекта без большого количества дополнительных манипуляций. Может ли кто-нибудь указать мне правильное направление?

2 ответа

Решение

@ Марк Спасибо за помощь. Мой вопрос был конкретно о преобразовании CFQUERY в то, что ANGULAR может иметь дело. С небольшой помощью статьи Бена Наделя об Angular и статье о преобразовании запроса в массив структур. Я получил это завершено.

Для тех CFers, которые найдут это, возьмите Бен queryToArray. Вот пример с запросом, который содержит столбцы firstName, lastName, age.

<cfscript>
  a = createObject('component','angular');
  getQuery = a.getQuery();
  QueryArray = a.queryToArray(getQuery);
</cfscript>

<script type="text/javascript"> 
  var theQuery = <cfoutput>#serializeJSON(QueryArray)#</cfoutput>;
  function dataLooper($scope){
    $scope.people = theQuery;
  }
</script>

<div ng-controller="dataLooper">
  <div ng-repeat="person in people">
  {{person.FIRSTNAME}} - {{person.LASTNAME}} - {{person.AGE}}<br>
  </div>
</div>

Я надеюсь, что это помогает кому-то еще, кто пытается изучать Angular!

ng-repeat может обрабатывать массив или объект. Для объекта используйте синтаксис "(ключ, значение)".

Это не решит вашу проблему, если вы не переформатируете свои данные следующим образом:

{ 'Yasteel':'Si', 'Kyleigh':'No', ... }

Тогда вы можете сделать это:

<div ng-repeat="(first,last) in people">
    {{first}} - {{last}} <br>
</div>
Другие вопросы по тегам