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));

};

有关详细信息,请参阅 AngularJS $rootScope.scope API Reference - $eval