好吧,到目前为止,我通过指令找到了可能的解决方案。
HTML
<div my-autocomplete my-autocomplete-source="element" my-autocomplete-model="obj[element.model]"></div>
指示
app.directive('myAutocomplete', function() {
return {
restrict: 'A',
replace: true,
template: '<input type="text" name="{{myAutocompleteSource.model}}" placeholder="{{myAutocompleteSource.label}}" ng-model="selected" typeahead="o as o.text for o in myAutocompleteSource.options | filter:$viewValue | limitTo:5" typeahead-editable="false" />',
scope: {
myAutocompleteSource: '=',
myAutocompleteModel: '='
},
controller: function($scope) {
$scope.selected = null;
$scope.$watch('selected', function() {
$scope.myAutocompleteModel = ($scope.selected && 'value' in $scope.selected) ? $scope.selected.value : null;
});
}
};
});
嗯......显然这只是一个技巧......我想知道是否有更清洁,更自然的方式来做到这一点......无需修改代码或使用指令......