내 앱에는 클라이언트와 서비스 (약혼)라는 두 개의 필드가 있습니다. 클라이언트에 자동 완성 (이 솔루션을 사용하여 https://stackoverflow.com/a/19547431/223934)을 추가합니다. 추가 단계로 가고 싶습니다. 클라이언트를 선택하면 해당 클라이언트에 대해 사용 가능한 서비스 (계약)에 대한 요청을 보내고 옵션으로보기에 표시됩니다.각도 - 지시어에서 전역 범위 변수로의 패스 값
CSM.controller('myController', ['$scope', '$http', function ($scope, $http) {
$scope.availableEngagements = '';
....
내가 this guide과 결합 방법을 "="적용하는 시도
CSM.directive("autocomplete", ["AutoCompleteService", function (AutoCompleteService) {
return {
restrict: "A",
scope: {
action: '@',
availableEngagements: "="
},
link: function (scope, elem, iAttrs, ctrl, http) {
iAttrs.$observe('action', function (actionValue) {
elem.autocomplete({
source: function (searchTerm, response, scope) {
AutoCompleteService.search(searchTerm.term, actionValue).then(function (autocompleteResults) {
response($.map(autocompleteResults, function (autocompleteResult) {
return {
label: autocompleteResult.name,
value: autocompleteResult.id,
desc: autocompleteResult.name
};
}));
});
},
minLength: 1,
select: function (event, selectedItem) {
// Do something with the selected item, e.g.
scope.selectedValue = selectedItem.item.value;
scope.$apply();
if (actionValue === "client") {
scope.availableEngagements = AutoCompleteService.engagementSearch(selectedItem.item.value);
//scope.$apply();
}
event.preventDefault();
}
});
});
}
};
}]);
CSM.factory("AutoCompleteService", ['$http', function ($http) {
return {
search: function (term, action) {
return $http.post("autocomplete/" + action + "/", {term: term}).then(function (response) {
return response.data;
});
},
engagementSearch: function (client) {
//Tai sao POST ko duoc ma GET lai duoc?
$http.get("autocomplete/engagement/?term=" + client).success(function (data) {
return data;
});
}
};
}]);
지시어. 자동 완성 기능이 제대로 작동하여 앱에서 요청을 성공적으로 보내고 서비스 (계약) 결과를 수신했습니다. 이보기에는 전역 범위로 전달되지 않습니다.
제 코드에 문제가 있음을 알려주십시오. 고맙습니다.