Подтвердить что ты не робот

Создавая директиву angular -js, которая обновляет ng-model

Я пытаюсь создать директиву, которая обертывает плагин twart typeahead. Что я до сих пор:

HTML:

<input ng-twitter-typeahead type="text" ng-model="participant" data="exampleData" />
{{ participant }}

Я хочу, чтобы значение для "участника" обновлялось, когда я выбираю что-то на typeahead. Сам typeahead работает правильно, но я не могу зафиксировать выбранное значение. Ниже представлен 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.
     }
  };
});

Мне явно не хватает чего-то фундаментального, когда дело касается AngularJS. Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ **

Я нашел решение. Иногда я не знаю:

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

Ответ 1

В директиве может потребоваться контроллер ngModel. Он предоставит вам доступ к контроллеру модели внутри функции link, см. http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController

Здесь вы можете найти пример, как использовать его в реальной жизни http://suhairhassan.com/2013/05/01/getting-started-with-angularjs-directive.html#.UhSdDOZdXUE