AngularJS - 如何在函数中将NgModel的名称作为参数传递,然后使用$ scope

时间:2016-11-18 01:47:00

标签: javascript angularjs angular-ngmodel

所以,我正在收听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”作为例子。

谢谢大家!

3 个答案:

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

};

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