javascript - AngularJS:在每次按键时使用动态 ng-model 模糊更新输入

标签 javascript forms angularjs

jsFiddle 演示问题:http://jsfiddle.net/yoxigen/xxTJc/

我正在构建一个小表单来编辑一个对象的所有属性。为此,我有一个用于属性的中继器。每个属性都有其输入:

<ul ng-controller="myController">
   <li ng-repeat="(property, value) in obj">
       <input ng-model="obj[property]"/><span>{{value}}</span>
   </li>
</ul>

每次在输入中按下一个键时,它旁边的值都会正确更新,但输入会失去焦点。知道如何解决这个问题吗?

最佳答案

I wish there was a way to postpone the regeneration until I'm done editing.

你也许可以做到这一点。只需制作一个自定义指令即可消除 AngularJS 事件并改为收听“更改”。以下是该自定义指令的示例:

YourModule.directive('updateModelOnBlur', function() {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, elm, attr, ngModelCtrl)
    {
      if(attr.type === 'radio' || attr.type === 'checkbox')
      {
        return;
      }

      // Update model on blur only
      elm.unbind('input').unbind('keydown').unbind('change');
      var updateModel = function()
      {
        scope.$apply(function()
        {
          ngModelCtrl.$setViewValue(elm.val());
        });
      };
      elm.bind('blur', updateModel);

      // Not a textarea
      if(elm[0].nodeName.toLowerCase() !== 'textarea')
      {
        // Update model on ENTER
        elm.bind('keydown', function(e)
        {
          e.which == 13 && updateModel();
        });
      }
    }
  };
});

然后根据您的输入:

<input type="text" ng-model="foo" update-model-on-blur />

关于javascript - AngularJS:在每次按键时使用动态 ng-model 模糊更新输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340555/

相关文章:

php - 表单发送验证

javascript - AngularJS UI-网格排序

javascript - react Hook 状态不更新

javascript - 错误 : spawn ENOENT for png files when using grunt-contrib-imagemin

javascript - 使用 lodash 映射复杂的 JSON

javascript - 如何在 Flask 中根据数据库 (PostgreSQL/SQLAlchemy) 的不同列创建 JSON 文件,以便在 JavaScript 代码中使用它?

html - 将鼠标悬停在提交按钮上 : Am I doing this the best way? 有更好的方法吗?

javascript - 如何让人们在同一表单上进行协作并实时更新?

angularjs - 为什么 Karma 显示范围错误?

javascript - 如何在 Angular JS 中获得自动完成功能?