2013-09-27 3 views
0

Я написал директиву:директива сферы пересть родительское значение

ensureUnique: function ($http, $parse) { 
     return { 
      scope: { 
       ensureUniqueType: "=", 
       ensureUniqueDisabled: "=" 
      }, 
     ... 
     } 
    }, 

но если я пытаюсь использовать его как это:

<input name = "groupId" ng-show="anyFunction()" 
     type="text" ng-model="group.groupId" 
     ensure-unique="" ensure-unique-disabled="oldId != '-1'" ensure-unique-type="type" > 

входного элемент стал невидимым (не зависит от результата anyFunction). Кажется, что директивная область переписать значение ngShow

+0

Это должно фактически дать вам ошибку при компиляции об обеспеченииUniqueDisabled, не являющемся присваиваемым выражением. Вы используете 'sureUniqueDisabled: '='', но тип привязки '=' выполняется для присваиваемых значений. Вы ищете выражение, которое является связыванием '&'. Посмотрите на [директивное руководство] (http://docs.angularjs.org/guide/directive) и ctrl-f выполните поиск '&', а затем прочитайте об этом. Вы хотите иметь 'обеспечениеUniqueDisabled: '&'', потому что у вас есть выражение, а не назначаемая модель. –

ответ

1

Вы должны сделать ng-show="$parent.anyFunction()", так как директива создает новую область.

Причина, почему она невидима, потому что, так как функция anyFunction() является undefined, undefined будет оцениваться с false функцией toBoolean() в ng-show директиве. Вы можете обратиться к этому answer за подробностями.

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