我有一个html input
字段列表,可以绑定到他们的支持json内容字段(双向通过ng-model
),或者从html中的选定对象获取它们的值'select'(单向通过ng-view
),或需要在两种表格之间切换。我甚至不确定后者是否可能,因为我是angularjs的新手,这就是这个问题的关键所在。
我可以为切换绑定输入文本正确设置初始input
绑定,如果它具有null内容,则绑定到选择列表,但如果它具有非null内容,则绑定那个。我还可以为每个设置一个checkbox
来跟踪它是从用户那里获得输入,还是从select
列表中获取。
我需要做什么:如果用户开始手动输入值(或取消选中'使用选择列表'checkbox
),它会切换到文本内容字段的绑定。当用户检查“使用选择列表”select
时,它还需要切换回绑定到checkbox
。
<div ng-app="myApp">
<div ng-controller="myCtrl">
<label for="ddlSelectionList">Select from list:</label>
<select id="ddlSelectionList" ng-model="selectedRow" ng-options="row as row.name for row in selectionList"></select>
<div ng-repeat='text in texts'>
<label for='txt{{text.id}}'>{{text.name}}</label>
<input ng-if='text.content !== null' type="text" id='txt{{text.id}}' ng-model='text.content' />
<input ng-if='text.content === null' type="text" id='txt{{text.id}}' ng-value='selectedRow[text.listfieldname]' ng-keyup='manual(text, this)' />
<span ng-if='text.listfieldname !== null'>
<input type='checkbox' ng-init='text.uselist = (text.content === null)' ng-checked='text.content === null' ng-change='bindSelectList(text)' ng-model='text.uselist'/>
<label>use select list</label>
</span>
</div>
</div>
</div>
controller.js:
angular.module('myApp', [])
.controller('myCtrl', function ($scope, $timeout) {
$scope.selectionList = [
{'id': 5, 'name': 'row 5', 'field1': 'row5field1', 'field2': 'row5field2' },
{'id': 9, 'name': 'row 9', 'field1': 'row9field1', 'field2': 'row9field2' }];
$scope.selectedRow = $scope.selectionList[1];
$scope.texts = [{
'id': 453,
'name': 'Input Text1',
'content': null,
'listfieldname': 'field1'
}, {
'id': 455,
'name': 'Input Text2',
'content': 'manual entry',
'listfieldname': 'field2'
}];
$scope.bindSelectList = function(text) {
if (text.uselist) { //set value to get from select list
//??.ngValue = 'selectedRow[text.listfieldname]'
} else { //bind to text.content
//??.ngModel = 'text.content'
}
};
$scope.manual = function(text, txtInput) {
text.uselist = false;
//??.ngModel = 'text.content'
console.log(text);
};
});
here's the jsfiddle for the above code。
编辑:我想要小提琴做什么: