对对象属性进行ng-repeat,但在键入后将defocuses输入框

use*_*169 12 javascript angularjs angularjs-ng-repeat

我ng-repeat用来将表单元素绑定到我拥有的自定义对象的属性,例如:

 $scope.myObject = {
            'font-size': 10,
            'text-outline-width': 2,
            'border-color': 'black',
            'border-width': 3,
            'background-color': 'white',
            'color': '#fff'
    }
Run Code Online (Sandbox Code Playgroud)

HTML:

<div ng-repeat='(key, prop) in myObject'>
    <p>{{key}} : {{prop}}</p>
    <input type='text' ng-model='myObject[key]'>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,每次我尝试在输入框中键入一个值时,文本框都会被取消选中,我必须重新选择它才能继续输入.

是否有另一种方法可以对对象进行双向绑定,以便我可以自由键入?

这是JSFiddle:http: //jsfiddle.net/AQCdv/1/

Kla*_*r_1 22

输入未集中的原因是Angular在每次myObject更改时重建了DOM.您可以专门指示ng-repeat按键跟踪,因此不会发生意外行为.此外,这将需要1.1.5更新版本的库:

function MyCtrl($scope) {
  $scope.myObject = {
    'font-size': 10,
    'text-outline-width': 2,
    'border-color': 'black',
    'border-width': 3,
    'background-color': 'white',
    'color': '#fff'
  }
}
Run Code Online (Sandbox Code Playgroud)
<script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<div ng-app ng-controller="MyCtrl">
  <div ng-repeat='(key, prop) in myObject track by key'>
    <p>{{key}} : {{prop}}</p>
    <input type='text' ng-model='myObject[key]'>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

更新了小提琴.