2014-12-06 60 views
0

如何判斷ng-repeat是否顯示1項?像,if ng-repeat items === 1: do something.如何判斷Ng-Repeat是否打印了x項

<div ng-controller="mycontroller2"> 
<form ng-submit="submit()"> 
    {% csrf_token %} 
    Search by name: 
    <input ng-model="artistname" /> 
    <input type="submit" value="submit" /> 
</form> 
<table> 
    <tr ng-repeat="name in names | filter:artistname | limitTo:10"> 
     <!-- if number of "name" === 1 I want the form submitted --> 
     <td ng-hide="!artistname"> 
      <a href="" ng-click="submit()"> 
      {({ name })} 
      </a> 
     </td> 
    </tr> 
</table> 

此代碼讀取用戶輸入要顯示的是提交表單的鏈接列表。我想要的是,當ng-repeat顯示的藝術家姓名的初始列表降至1時,表單會自動提交,因爲無論如何,在該點只能有一個數據庫。

+0

從本質上講,如果只有一個結果,你想自動提交表單?你能否提供一些關於你的用例的背景知識? – 2014-12-06 02:49:40

回答

0

我不得不結合幾個答案才能得到我正在尋找的東西。下面的<div>元素使用ng-if和ng-init函數在剩下一個名字時提交表單。

<form ng-submit="submit()"> 
    {% csrf_token %} 
    Search by name: 
    <input ng-model="artistname" /> 
    <input type="submit" value="submit" /> 

    <div ng-if="(names | filter:artistname).length===1" ng-init="submit()"></div> 
</form> 

<table> 
    <tr ng-repeat="name in names | filter:artistname | limitTo:10"> 
     <td ng-hide="!artistname"> 
      <a href="" ng-click="submit()"> 
      {({ name })} 
      </a> 
     </td> 
    </tr> 
</table> 

現在,當ng-repeat過濾器中剩下一個名稱時,表單自動提交。

1

您可以檢查名字數組的長度是這樣的:

<span ng-if="names.length === 1">Do something</span> 

只需添加NG-如果到了NG-重複,然後將有條件相同的元素。

更新:

你可以聽邏輯使用$watch控制器:

$scope.$watch('names', function() { 
    if (names.length === 1) { 
    // Do something 
    } 
} 
+0

爲什麼「做某事」的部分必須是HTML?我需要ng - 如果調用'submit()'函數。 – 2014-12-06 06:21:33

+0

它沒有。如果您需要角度世界中的邏輯,您可以觀看「名稱」屬性進行更改並從那裏開始。查看我的更新。 – risto 2014-12-06 06:28:24

0

這需要在控制器發生。

if ($scope.names.length === 1) $scope.submit() 
1

添加這樣的事情在你的表單塊:

<div ng-if="names.length == 1"> 
    <script type="text/javascript"> 
    $("#myform").submit(); 
    </script> 
</div> 
1

提供答案的Risto是沿着正確的路線,只是需要進行調整,以確定是否只有後一個值過濾器已應用於

<form ng-submit="submit()"> 
    {% csrf_token %} 
    Search by name: 
    <input ng-model="artistname" /> 
    <input type="submit" value="submit" 
      ng-disabled="(names | filter:artistname).length === 1" /> 
</form> 

過濾將改變顯示元件的數量,但會沒有t更改了names陣列的長度。

+0

當剩下1個名字時禁用我的提交按鈕。我需要它來激活提交按鈕。 – 2014-12-06 06:16:48

+0

您可以將禁用表達式的邏輯更改爲任何業務規則指定的內容。 '> = 1''!== 1'' <= 1' – Brocco 2014-12-06 13:27:37

+0

雖然我不需要禁用任何東西。 – 2014-12-06 19:01:42

相關問題