2013-01-04 31 views
3

我想看看AngularJS,用CF后端我如何使用AngularJS和serializeJSON CFQUERY

我有下面的代码,拉了一个名为getIndex定期CFQUERY其拉各列五行(名字,姓氏)

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会给我一些类型的可用对象,没有很多额外的操作。有人能指引我朝着正确的方向吗?

回答

1

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

对于那些能找到这个的CFer,可以得到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!

+0

Ben Nadel拥有关于此主题的更多最新信息,并撰写了JsonSerializer.cfc。它在这里:http://www.bennadel.com/blog/2505-jsonserializer-cfc---a-data-serialization-utility-for-coldfusion.htm。此外,代码可从github获得(并维护):https://github.com/bennadel/JsonSerializer.cfc –

3

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

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

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

然后,你可以这样做:

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

我想我可以看到这将如何工作,如果查询只返回2列,但我不确定如何查询如果查询返回(名字,姓氏,地址,城市,州,邮编等)序列化CFQUERY正在返回一个包含COLUMNS和DATA的对象。但是那些都是数组的数组。由于没有可以在Angular中看到的循环计数器,我不知道如何进入这些数组。今天感觉非常愚蠢 – Lance

+0

你可能需要编写自己的指令,它理解数据的结构。 –