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)