所以,我正在收听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 :(得分:0)
我得到了解决方案,在我的情况下它将是:
$scope.filterValue = function(ngModelName, type, $event){
$scope[ngModelName]
};
答案 1 :(得分:0)
也许你的真实情况有所不同,但我认为不需要在你的示例代码中评估名称。
{{1}}
答案 2 :(得分: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));
};