2013-01-04 30 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

你可能需要編寫自己的指令,它理解數據的結構。 –