2013-09-23 5 views
0

Я хочу сделать специальную директиву проверки для моего углового приложения. Единственная проблема заключается в том, что я не знаю, как получить значениенастраиваемая директива валидации в угловом

<select class="form-control" ng-model="$parent.newSector" ng-options="item.id as item.name for item in sectors" not-empty-array="merchant.sectors"></select> 

Как вы можете видеть из моей разметки я получил директиву под названием notEmptyArray, где я установил выражение (это то же самое, как нг-модель, просто другое выражение). Как я могу получить доступ к нему в моей директиве?

directive = function({ 
    require: "ngModel", 
    link: function(scope, element, attributes, control) { 
    //how to access the value of merchant.sectors (its an array in the scope) 
    } 
}); 
+0

'scope.merchant.sectors'? – AlwaysALearner

+0

Да, я мог бы получить его таким образом, но часть «merchant.sectors» должна быть задана значением not-empty-array. поэтому, если я пишу пользователям как значение этого атрибута. он должен проверить на scope.users – Safari

ответ

1

Вы должны были бы выделить сферу:

app.directive("notEmptyArray",function(){ 
    return { 
     scope:{ 
      items:"=notEmptyArray" 
     }, 
     link: function(scope, element, attributes, control) { 
      /* anything you feed to "not-empty-array" would be accessible 
       inside items */ 
      console.log(scope.items);  
     } 
    } 
}); 
+0

thx. что сработало – Safari

+0

Недостатком изоляции области является то, что другие директивы больше не будут работать вместе с вашей директивой, если они свяжутся с чем-то из родительской области (частый сценарий). Причина этого в том, что элемент html может иметь только одну область. Если для нескольких директив требуется область действия, будет создан только один (самый ограничительный). Вам нужно будет сделать вашу директиву совместимой с другими директивами, чтобы повторно отображать некоторые свойства в вашей изолированной области. Я предлагаю вам не идти в этом направлении и просто выполнить: «scope. $ Eval (attrs.notEmptyArray), чтобы получить значение. –

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