Próbuję utworzyć dyrektywę, która otacza wtyczkę twitter typeahead. To, co mam tak daleko jest:Tworzenie dyrektywy kątowej, która aktualizuje model ng
HTML:
<input ng-twitter-typeahead type="text" ng-model="participant" data="exampleData" />
{{ participant }}
Chcę wartość dla „uczestnika” zostać zaktualizowane, gdy wybiorę coś na wpisywanie znaków z wyprzedzeniem. Sam ciąg znaków działa poprawnie, ale nie mogę uchwycić wybranej wartości. Poniżej znajduje się javascript:
var app = angular.module('myApp', [])
app.directive('ngTwitterTypeahead', function() {
return {
restrict: 'EA',
scope: {
data: '='
},
link: function ($scope, $element, $attrs) {
$element.typeahead($scope.data);
$element.bind('typeahead:selected', function(obj, datum) {
// I really don't know how to do this part
// the variable 'datum' is what I want to be passed to ng-model
// I tried things like:
// Including the ngModelController and typing:
// ngModel.$setViewValue(datum)
// but that didn't work.
}
};
});
Oczywiście brakuje mi czegoś podstawowego, jeśli chodzi o AngularJS. Każda pomoc będzie bardzo ceniona!
EDIT **
mogę znaleźć rozwiązanie. Czasami nie mam pojęcia:
angular.module('siyfion.ngTypeahead', [])
.directive('ngTypeahead', function() {
return {
restrict: 'C',
scope: {
datasets: '=',
ngModel: '='
},
link: function ($scope, $element, $attrs) {
$element.typeahead($scope.datasets);
$element.bind('typeahead:selected', function(obj, datum) {
$scope.$apply(function() {
$scope.ngModel = datum;
});
})
}
};
});
Dziękujemy! Zaskoczyłem całą komplikację i nauczyłem się czegoś od tego. – user2205763