Как я могу использовать 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>