Combo v2
This commit is contained in:
parent
9fcf18594a
commit
33711c5e33
|
@ -12,7 +12,8 @@ export function directive(resolve, normalizer) {
|
|||
scope: {
|
||||
url: '@',
|
||||
showField: '@',
|
||||
valueField: '@'
|
||||
valueField: '@',
|
||||
model: '<'
|
||||
},
|
||||
template: function(element, attrs) {
|
||||
normalizer.normalize(attrs);
|
||||
|
@ -39,34 +40,55 @@ export function controller($http, $element, $attrs, $scope, $parse, $document, p
|
|||
let locked = false;
|
||||
|
||||
$http.get($scope.url).then(
|
||||
json => {data = json.data;},
|
||||
json => {
|
||||
data = json.data;
|
||||
setTimeout(function() {
|
||||
$scope.setValue($scope.model);
|
||||
});
|
||||
},
|
||||
json => {data = [];}
|
||||
);
|
||||
|
||||
$scope.$watch($attrs.model, (value) => {
|
||||
$scope.$watch($attrs.model, (newValue) => {
|
||||
if(!locked) {
|
||||
locked = true;
|
||||
//$scope.selectOptionByValue(value);
|
||||
$scope.setValue(newValue);
|
||||
locked = false;
|
||||
}
|
||||
});
|
||||
|
||||
$scope.selectOptionByIndex = function(index) {
|
||||
let item = data[index];
|
||||
input.val(item[$scope.showField]);
|
||||
$scope.$apply(function () {
|
||||
locked = true;
|
||||
$parse($attrs.model).assign($scope, item[$scope.valueField]);
|
||||
locked = false;
|
||||
});
|
||||
}
|
||||
$scope.setValue = function(value) {
|
||||
let index = -1;
|
||||
|
||||
$scope.selectOptionByValue = function(value) {
|
||||
if(data)
|
||||
if(value && data)
|
||||
for(let i = 0; i < data.length; i++)
|
||||
if(data[i][$scope.valueField] == value) {
|
||||
$scope.selectOptionByIndex(i);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
|
||||
$scope.selectOptionByIndex(-1);
|
||||
}
|
||||
|
||||
$scope.selectOptionByIndex = function(index) {
|
||||
let value;
|
||||
|
||||
if(index >= 0) {
|
||||
let item = data[index];
|
||||
input.val(item[$scope.showField]);
|
||||
value = item[$scope.valueField];
|
||||
}
|
||||
else {
|
||||
input.val('');
|
||||
value = undefined;
|
||||
}
|
||||
|
||||
if(!locked) {
|
||||
$scope.$apply(function () {
|
||||
locked = true;
|
||||
$parse($attrs.model).assign($scope, value);
|
||||
locked = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue