AngularJS在自定义指令中包含ui-select

时间:2014-10-30 07:44:07

标签: angularjs angularjs-directive

我正在尝试将ui-select包装在自定义指令中。 (https://github.com/angular-ui/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>"
    };
  });

选择正常,但与ng-model的绑定不起作用。我无法设置模型或阅读它。 我没有得到它,因为它使用一个简单的模板,如

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

因为我在指令中包装了一个指令,所以有什么特别的事吗?

1 个答案:

答案 0 :(得分:12)

我设法通过将模板中的ng-model设置为

来进行绑定工作
ng-model="$parent.ngModel"