html - 输入 1 个字符后输入框失去焦点
问题描述
在输入字段中键入每个字符后,我似乎无法写下一个完整的单词而不会集中注意力。试图理解为什么会这样。
AngularJS
var module = angular.module("myModule", []);
module.controller("myController", function($scope) {
$scope.prop = {};
});
HTML
<div ng-app="myModule">
<div ng-controller="myController">
<button ng-show="!prop.dropdownType"
ng-click="prop.dropdownType = ['']">Init</button>
<div ng-hide="!prop.dropdownType" ng-repeat="(key, value) in prop.dropdownType">
<input type="text" ng-model="prop.dropdownType[key]">
</div>
<button ng-hide="!prop.dropdownType"
ng-click="prop.dropdownType.push('')" >Add options</button>
</div>
</div>
编辑:创建了一个快速代码,您可以在其中看到我的意思。只需运行代码,初始化输入字段并尝试输入一个单词:https ://jsfiddle.net/wk173q0a/
解决方案
我能够通过进行以下更改来修复您的代码:
<div ng-hide="!prop.dropdownType">
<input ng-repeat="type in prop.dropdownType track by $index" type="text" ng-model="type">
</div>
问题是您正在更新您正在迭代的值的键。这是一个消化循环的开始,你正在失去焦点。此外,添加按钮不起作用,因为您正在添加相同的对象而没有跟踪。
最后,您将需要遍历对象数组以便能够维护 ng-model 中的引用。否则,一旦向数组添加新值,所有更改都将丢失。
这是了解摘要周期的好读物: https ://www.thinkful.com/projects/understanding-the-digest-cycle-528/
推荐阅读
- node.js - MongoDB(+ Node/Mongoose):如何在不“标记”所有记录的情况下跟踪处理过的记录?
- regex - 使用正则表达式在大括号之间添加空格
- google-cloud-firestore - Firestore 触发器时间信息
- reactjs - 升级到 Material UI 4 后出现错误 - withStyles
- python - 比较两个 anaconda 安装之间的包
- python - 录制视频时的 VideoCapture
- c# - 是否可以使用 vstudio 2019 安装 vstest.console.exe 2013?
- haskell - 为什么只允许 Haskell 中的函数使用隐含多态性?
- npm - 构建 Nuxt 应用程序时出现“EPERM:不允许操作”错误
- javascript - 在“使用严格”之后寻找“使用更严格”