我有以下的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