2014-10-30 5 views
7

Я пытаюсь обернуть ui-select в пользовательскую директиву. (https://github.com/angular-ui/ui-select)AngularJS Обертка ui-select в пользовательской директиве

this.adminv2.directive('eventSelect', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     scope: { 
     ngModel: '=', 
     placeholder: '=' 
     }, 
     controller: function($scope, $http) { 
     return $scope.refreshEvents = function(searchTerm) { 
      return $http.get('/events/autocomplete', { 
      params: { 
       term: searchTerm 
      } 
      }).then(function(response) { 
      return $scope.events = response.data; 
      }); 
     }; 
     }, 
     template: "<div>{{ngModel}}\n <ui-select ng-model=\"ngModel\"\n    theme=\"bootstrap\"\n    ng-disabled=\"disabled\"\n    reset-search-input=\"false\">\n <ui-select-match placeholder=\"Enter an event\">{{$select.selected.name}}</ui-select-match>\n <ui-select-choices repeat=\"event in events track by $index\"\n    refresh=\"refreshEvents($select.search)\"\n    refresh-delay=\"0\">\n  <span ng-bind-html=\"event.name | highlight: $select.search\"></span>\n  <i class=\"icon-uniF111 fg type-{{raceType}} pull-right\" ng-repeat='raceType in event.racetypes'></i>\n  <br>\n  {{event.dates}} <i class='pull-right'>{{event.location}}</i>\n </ui-select-choices>\n </ui-select>\n</div>" 
    }; 
    }); 

Отборные работает правильно, но связывание с нг-модель не работает. Я не могу установить модель или прочитать ее. я не понимаю, так как она работает, когда я использую простой шаблон такой как

<div><input ng-model="ngModel"></div> 

Есть ли что-то особенное, чтобы сделать, потому что я обернуть директиву в директиве?

ответ

12

мне удалось сделать обязательную работу, установив нг-модели в шаблоне, как

ng-model="$parent.ngModel" 
+3

Спасибо так много, я бил головой с этой проблемой, и ваш ответ заставил его работать на меня. Не могли бы вы узнать, почему это работает? – forgivenson

+0

Спасибо, спасибо, спасибо! – Wlada