AngularJS - 如何将 NgModel 的名称作为函数中的参数传递,然后使用 $scope 访问它
AngularJS - How to pass name of NgModel as parameter in a function then access it with $scope
所以,我正在监听 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
是来自 angular 的事件,这是 $scope
)
一次,我的函数 returns 一个错误,它启用一个显示错误的标志。在这种情况下,我知道 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" 为例。
谢谢大家!
我得到了解决方案,在我的情况下是:
$scope.filterValue = function(ngModelName, type, $event){
$scope[ngModelName]
};
也许您的实际情况有所不同,但我认为没有必要评估示例代码中的名称。
<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);
};
使用范围的 $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));
};
所以,我正在监听 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
是来自 angular 的事件,这是 $scope
)
一次,我的函数 returns 一个错误,它启用一个显示错误的标志。在这种情况下,我知道 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" 为例。
谢谢大家!
我得到了解决方案,在我的情况下是:
$scope.filterValue = function(ngModelName, type, $event){
$scope[ngModelName]
};
也许您的实际情况有所不同,但我认为没有必要评估示例代码中的名称。
<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);
};
使用范围的 $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));
};