2013-07-18 34 views
2

我最近開始學習AngularJS。當我從數據庫中獲取數據的數組,我使用功能的foreach,所以我的代碼是AngularJS和php數組數據

<ul> 
    <?php foreach($Items as $Item):?> 
      <li><?php echo $Item['name'];?></li> 
    <?php endforeach;?> 
</ul> 

我用AngularJS,因爲我需要排序列表元素。我與AngularJS代碼大致

<script> 
    function PositionsList($scope){ 
     $scope.positions=<?php echo json_encode($Items);?> 
    } 
</script> 
<ul> 
    <li ng-repeat="position in positions | filter:query"> 
     <p>{{position.name}}</p> 
    </li> 
</ul> 

是否可以這樣做呢?如果沒有,如何獲取從服務器收到的數據,如果沒有使用$ http.post/get?

+0

我最初的感覺是,你將無法NG重複和PHP的forEach以這種方式結合。 –

+1

你的代碼不工作嗎?這段代碼對我來說看起來不錯。你可以顯示json_encode的JSON輸出嗎? – MaxPRafferty

+1

我認爲最好不要將PHP和JS代碼混合在同一個文件中。爲什麼不使用AJAX檢索Items數組而不是用PHP回顯? – m4t1t0

回答

8

您可以使用ng-init,讓您的模型,一個單獨的文件:

<ul ng-init="positions = <?php echo htmlspecialchars(json_encode($Items)); ?>"> 
    <li ng-repeat="position in positions | filter:query"> 
     <p>{{position.name}}</p> 
    </li> 
</ul> 
+0

重要的是要記住** ng-init **需要放在** ng-repeat **指令的父元素級別,就像這裏一樣。 我試圖把它放在相同的元素,並沒有取得成功 –

+0

另一點:在javascript中沒有對象的排序。你需要使用一個數組來在javascript中進行排序。所以當使用json_encode時,數組順序可能會受到影響。而在你的'ng-repeat'裏面,順序可能與原始數組中的順序不匹配。 – bazaglia