我如何使用AngularJS和serializeJSON cfquery

时间:2013-01-04 00:19:27

标签: coldfusion angularjs cfquery

我试图用cf后端

来看一下AngularJS

我有以下代码来提取一个名为getIndex的常规cfquery,它每个都会拉出五行列(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 个答案:

答案 0 :(得分:3)

ng-repeat可以处理数组或对象。对于对象,请使用“(key,value)”语法。

这不会解决您的问题,除非您重新格式化数据:

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

然后你可以这样做:

<div ng-repeat="(first,last) in people">
    {{first}} - {{last}} <br>
</div>

答案 1 :(得分:1)

@Mark感谢您的帮助。我的问题是关于将CFQUERY转换为ANGULAR可以处理的问题。在Ben Nadel的article about Angulararticle about converting a query to an array of structs的帮助下。我完成了它。

对于那些会发现这一点的CFers,可以得到Ben的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的人!