我在原生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)"/>
但它始终记录未定义!
为什么
答案 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)