AngularJS - 将this.value传递给函数

时间:2014-10-20 10:29:55

标签: javascript angularjs function angularjs-scope

我在原生javascript中使用此代码,它可以正常工作。它记录文本框的当前值

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

<input type="text" onclick="boom(this.value)"/>

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

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

<input type="text" ng-click="boom(this.value)"/>

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

3 个答案:

答案 0 :(得分:22)

据我所知,在this的背景下ng-*scope 您可以通过boom($event.target.value)访问。

答案 1 :(得分:10)

Angular的方法是使用ngModel

<input type="text" ng-model="input" ng-click="boom()"/>

并在控制器中:

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

this.input也将有效,因为this指向当前范围对象。

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

<input type="text" ng-click="boom($event)"/>

var boom = function($event) {
    console.log($event.target.value);
};

答案 2 :(得分:1)

&#39;值&#39;没有在范围内定义。

我会扩展一点Miraage的答案..

this将参考范围。如果要访问DOM元素,请使用$ event。在回调函数中,您可以使用boom($event.target.value)

获取DOM元素值