2016-11-18 17 views
0

所以,我聽NgKeyup事件,它將觸發接收當前NgModel如下功能:

<input ng-model="__name" ng-keyup="filterValue(this.__name, 'stringMax100')" type="text" name="unit-income-name" class="form-control" id="unit-income-name" maxlength="100" required> 

this.__name相當於$scope.__name(如ng-keyup是從角的事件,這是$scope

一次,我的函數返回它使一個標誌,該標誌示出的誤差的誤差。在這種情況下,我知道NgModel的名稱是什麼,但如果我不知道該怎麼辦?

我想通過NgModel作爲參數和函數內評估它的名字,這是我的想法:

<input ng-model="__somethingElse1" ng-keyup="filterValue('__somethingElse1', 'stringMax100')" type="text"> 

<input ng-model="__somethingElse2" ng-keyup="filterValue('__somethingElse2', 'stringMax100')" type="text"> 

<input ng-model="__somethingElse3" ng-keyup="filterValue('__somethingElse3', 'stringMax100')" type="text"> 

而且從代碼:

$scope.filterValue = function(ngModelName, type, $event){ 

    $scope.eval(ngModelName) 
    // Or 
    eval($scope.ngModelName) 

}; 

還是什麼就像那樣,我使用「eval」作爲例子。

謝謝大家!

回答

0

使用範圍的$eval方法:

$scope.filterValue = function(ngModelName, type, $event){ 

    //works for simple names 
    //$scope[ngModelName]; 

    //works for complex names, '$ctrl.x', 'x[$index]', etc. 
    console.log($scope.$eval(ngModelName)); 

}; 

欲瞭解更多信息,請參閱AngularJS $rootScope.scope API Reference - $eval

+0

謝謝你,這是最好的解決方案。 – mkmnstr

0

我得到了解決,在我的情況下,這將是:

$scope.filterValue = function(ngModelName, type, $event){ 

    $scope[ngModelName] 

}; 
0

也許你的真實的情況是不同的,但我不認爲有必要在你的示例代碼評估的名字。

<input ng-model="__name" ng-keyup="filterValue(__name, 'stringMax100')" type="text" name="unit-income-name" class="form-control" id="unit-income-name" maxlength="100" required> 

$scope.filterValue = function(model, type, $event) { 
    console.log(model); 
}; 
+0

就我而言,我並不總是知道NG-模型的名稱,因爲它們是動態創建,所以我需要動態傳遞它。但是謝謝你! – mkmnstr

+0

我覺得沒關係。你總是需要通過一些變量來引用你的'ng-model',並且將相同的變量傳遞給函數 – Icycool

+0

我實際上試過了,沒有用。由於創造方式的原因,這有點複雜。無論如何,謝謝你。 – mkmnstr

相關問題