2015-08-17 53 views
0

我個人的一個陣列角度最好的方式,每個人都應該有電話和姓名, 所以我做:觀看兩個表單域

<div ng-repeat="a in arr"> 
    <ng-form> 
    phone{{a}}:<input type="phone" name="phone" /> 
    text{{a}}:<input type="text" name="name" /> 
    </ng-form> 
</div> 

當完成第一個人進入電話和姓名,我想調用「doSomething」函數。

這樣做的最好方法是什麼?我更喜歡不使用手錶。

例如,這是一個plunker

+0

@i會建議你在表單提交時調用函數而不是觀看字段 –

+0

但我在表單中有很多其他字段,我想知道這兩個完成時,即使其他不是 – BrMe

+0

不看。 ..只在這兩個字段中添加ng-change ......並在該函數中檢查兩者是否已定義並執行您的工作 – harishr

回答

1

我建議你在你的情況下使用ng-blur。使用ng-keyup將在每個鍵釋放事件上觸發該功能,這根本不好。您應該檢查下面的例子比如它是如何工作

phone{{a}}:<input type="phone" data-ng-blur="doSomething();" name="phone" /> 

我已經更新了你的fiddle檢查更多。

編輯

如果只想執行對於第一次迭代,那麼你應該通過index給你的函數,並檢查其是否等於0。那麼它一定是第一次迭代。像

ng-blur="doSomething($index)" 

在你的函數

$scope.doSomething = function(index){ 
if(index === 0) 
    alert("finish"); 
}; 
+0

這可行,但我希望ng-blur僅適用於第一個人,現在所有人都會發出警報 – BrMe

0

的實現這一目標的途徑之一是

<input type="phone" name="phone" ng-model="input.phone" ng-change="onchange()"/> 
<input type="text" name="name" ng-model="input.name" ng-change="onchange()"//> 

,然後在你的範圍

scope.input = {}; 
scope.onchange = function(){ 
     if(!input.phone) return; 
     if(!input.name) return; 
     //other logic 
} 

順便說一句,最好的做法,說總有一個點在你的NG-模型

0

也許,你正在尋找以下。

HTML

<div ng-repeat="a in arr"> 
    <ng-form> 
    phone{{a}}:<input type="phone" name="phone" ng-change="doSomething()" /> 
    text{{a}}:<input type="text" name="name" ng-change="doSomething()"/> 
    </ng-form> 
</div> 

控制器:

$scope.doSomething= function() { 
// do something 
}; 

注:您還可以使用ng-blur時將觸發只有當你離開的焦點從輸入字段。