2013-08-21 16 views
20

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; 
    }); 
    })    
    } 
    }; 
}); 

Odpowiedz

Powiązane problemy