AngularJS - 将this.value传递给函数

boi*_*hos 10 javascript function angularjs angularjs-scope

我在本机javascript中有这个代码,它可以正常工作.它记录文本框的当前值

<script>
    var boom = function(val) {
        console.log(val);
    };
</script>

<input type="text" onclick="boom(this.value)"/>
Run Code Online (Sandbox Code Playgroud)

然后我想在不使用模型的情况下在AngularJS上做同样的事情.这是代码:

$scope.boom = function(val) {
    console.log(val);
};

<input type="text" ng-click="boom(this.value)"/>
Run Code Online (Sandbox Code Playgroud)

但它始终记录未定义!
为什么

Mir*_*age 23

据我所知,this在上下文中ng-*是一个scope.
您可以访问boom($event.target.value).


dfs*_*fsq 10

Angular方式是使用ngModel:

<input type="text" ng-model="input" ng-click="boom()"/>
Run Code Online (Sandbox Code Playgroud)

在控制器中:

var boom = function() {
    console.log($scope.input);
};
Run Code Online (Sandbox Code Playgroud)

this.input也将工作,因为this指向当前范围对象.

如果您仍想避免使用模型,则可以使用事件对象:

<input type="text" ng-click="boom($event)"/>
Run Code Online (Sandbox Code Playgroud)

var boom = function($event) {
    console.log($event.target.value);
};
Run Code Online (Sandbox Code Playgroud)

  • 为什么不`ng-click ="boom(输入)"`?无需传递此事件. (2认同)