我有以下的html:呼叫范围功能的onkeydown事件中
<input type="checkbox" ng-model="user.show_value" ng-blur="update_show_value()">
值(真/假)是从数据库中获取并传递到NG-模型。取决于它,复选框被选中/取消选中。 NG-模糊内的功能触发更新的数据库和工作原理:
$scope.update_show_value() = function() {
if ($scope.user.show_value != undefined) {
$scope.loading = true;
//IF VALUE IS VALID, CALL THE UPDATEPIN FUNCTIONn
User.updatevalue($scope.user)
//IF SUCCESSFUL, GET VALUE
.success(function(data) {
$scope.loading = false;
$scope.formData = {}; //CLEAR FORM SO THAT USER CAN ENTER NEW DATA
$scope.user.show_value = {type : $scope.user[0].show_value}; //PASS VALUE IN OUR SCOPE
});
}
};
的问题是,我将不得不使用复选框从不支持Click事件的其他设备。从这些设备我应该使用相当于输入(键码13)。所以我添加了onkeydown事件来检测何时在复选框上按下回车键。使用从W3Schools的一个例子,我看到它的工作原理(这里是例子http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_event_key_keycode3)
<input type="checkbox" ng-model="user.show_value" onkeydown="keyCode(event)" ng-blur="update_show_value()">
现在我要调用的更新功能时的onkeydown事件检测代码13被按下。类似这样的:
<script>
function keyCode(event) {
var x = event.keyCode;
if (x == 13) {
alert ("You pressed the Escape key!");
update_show_value();
}
}
</script>
但是,调用keycode函数内的update_show_value不起作用。实际上,在keycode函数中添加update_show_value会导致其他一切不起作用(例如警报)
因此,出于某种原因,我认为范围函数不能在JavaScript函数内调用。如果这是真的,是否有解决方法?
没有问题的,但可能是下一个* *的问题:'keyCode'是不可靠的跨浏览器。所以:'var x = event.keyCode || event.which;' –
我建议手动隐藏元素和触发事件。你的代码超出了Angular的界限,你不会得到这些功能。替代品可能会污染全球范围,但触发事件会更好 – Rajesh