2013-03-25 3 views
1

Как я могу идти о делать что-то вдоль этих линий:AngularUI метод Выбор2 OnChange

<select ui-select2 multiple="true" on-change="onChange()" data-ng-model="select2Model"></select> 

где в моем контроллере, у меня есть OnChange (select2OnChangeData) определен.

Я попытался добавить этот

scope: { 
     model: "=ngModel", 
     onChange: "&onChange" 
    }, 

угловому-ш, но изменил переменную области видимости и разбили остальную часть функциональности.

Я бы очень хотел, чтобы воздержаться от:

.На ("изменение", функция (е)

+3

Использование нг замены для этого – finishingmove

+3

С 'нг-change' соответствующий метод выполняется несколько раз, когда директива инициализируется. – yorch

ответ

2

Хорошо, что я сделал только это в моем проекте:

HTML

<select data-placeholder="Select an asset" class="input-xxlarge" ui-select2="sourceAssetId" ng-model="sourceAssetId" ng-options="asset.id as asset.name for asset in assets"></select> 

Директива

module.directive("uiSelect2", function() { 
    var linker = function(scope, element, attr) { 
     element.select2(); 

     scope.$watch(attr.ngModel, function(newValue, oldValue) { 
      console.log("uiSelect", attr.ngModel, newValue, oldValue); 

      // Give the new options time to render 
      setTimeout(function() { 
       if(newValue) element.trigger("change"); 
      }) 
     }); 
    } 

    return { 
     link: linker 
    } 
}); 

Соответствующий код контроллера

$scope.$watch("sourceAssetId", function(newValue, oldValue) { 
    if(newValue) $scope.fetchAsset(); 
}); 
+0

и что делает html похожим на это? –

+0

Как вы получаете метод onChange? –

+0

В моем случае я этого не делаю. Я установил $ scope. $ Watch для атрибута ng-model. –

Смежные вопросы