2015-09-14 2 views
0

Я создаю директиву select box, где, как часть этого, мне нужно указать, является ли выбор кратным или нет.Условная директива multi-select в угловом

Я попытался установить несколько свойства в одном из моих объектов области значения «несколько», предполагая, что он должен выполнить и установить multiple="multiple" на моем переключателе следующим образом:

<select multiple="{{properties.multiple}}" /*...(other working properties)...*/ ></select> 

Но это у меня ошибка ..

Error: [$compile:selmulti] http://errors.angularjs.org/1.4.4/$compile/selmulti?p0=%3Cselect%20id%3D%22…y%20as%20value%20for%20(key%20%2C%20value)%20in%20properties.options%22%3E 
    at Error (native) 
    at path/to/angular/angular-1.4.4/angular.min.js:6:416 
    at X (path/to/angular/angular-1.4.4/angular.min.js:71:93) 
    at ha (path/to/angular/angular-1.4.4/angular.min.js:56:379) 
    at S (path/to/angular/angular-1.4.4/angular.min.js:54:425) 
    at path/to/angular/angular-1.4.4/angular.min.js:68:209 
    at path/to/angular/angular-1.4.4/angular.min.js:118:217 
    at n.a.$get.n.$eval (path/to/angular/angular-1.4.4/angular.min.js:133:39) 
    at n.a.$get.n.$digest (path/to/angular/angular-1.4.4/angular.min.js:130:60) 
    at n.scopePrototype.$digest (chrome-extension://ighdmehidhipcmcojjgiloacoafjmpfk/dist/hint.js:1955:23) 

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

Что может быть лучшим подходом?

ответ

0

Создайте свою собственную директиву, которая использует ng-if s или напишите директиву с логикой для переключения между одним и несколькими. Похоже, угловатый не хотел этого делать, но если это сработает для вас, подойдите к нему.

+0

Я думаю, что это лучший вариант доступен ... – KAD

0

Одной из возможностей было бы добавить функцию ссылки в ваше определение директивы, которое проверяет значение свойства.multiple вне вашей области действия, а затем использует jquery или jqLite для установки атрибута. Итак:

angular.directive("yourDirective", function() { return { 
     link: function(scope, element, attrs) { 
      if (scope.properties.multiple) { 
       elements.children("select").attr("multiple",true); 
      } 
     }, 
     templateUrl: "yourtemplate.html", ...  
     } 
}); 
+0

Как это делает переключатель множественным выбор а, он не ведет себя должным образом, хотя. Значение, если вы установили значение ng-model в '[" 2 "]' selectbox, опция с 'value =" 2 "' не будет выбрана (зная, что она существует). Кроме того, это создало пустую опцию в multi-select с 'value ="? ". Я также пробовал использовать контроллер, а не ссылку, но не с удачей .. Думаю, я поеду на 'ng-if'. Спасибо за вашу помощь.. – KAD

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