У меня есть пользовательская угловая директива, которая для краткости мы просто позвоним карте.Угловое значение области изоляции может быть установлено «истинным» или пустым
У этого есть изоляционная область, настроенная таким образом.
scope: {
latitude: '=?',
longitude: '=?',
draggable: '=?'
},
Я обычно положить что-то в моей функции связи, которая устанавливает значения области, чтобы быть или то, что было установлено в атрибуте, или по умолчанию, если ничего не было установлено, так что devoloper может добавить перетаскиваемым = «ложь», если они хотите, иначе мы автоматически по умолчанию будем иметь значение true, поэтому в функции ссылок у меня будет это.
$scope.draggable = angular.isDefined($scope.draggable) ? $scope.draggable : myDefaults.draggable;
Проблема заключается в том, что я хочу, чтобы все следующие, чтобы быть действительным использования в HTML
<map draggable></map>
<map draggable="true"></map>
<map draggable="false"></map>
но первая строка не будет работать, потому что angular.isDefined() является ложным.
Должен ли я проверить, определено ли оно первым, а если нет, то используйте что-то вроде attrs.draggable, чтобы увидеть, существует ли атрибут, прежде чем возвращаться к умолчанию?
Если это так, то есть еще одно осложнение, потому что мне нужно поместить мой код в контроллер, а не функцию связи (потому что ему нужно поговорить с дочерними директивами), и у меня нет доступа к «attrs» или «element» "от контроллера.
Любая помощь будет высоко оценена.
Спасибо, но это будет верно для ''? если я ошибаюсь, я думаю, что это будет ложно – jonhobbs
@jonhobbs Для '', '$ attrs.draggable' будет не определено в функции' link', и в этом случае будет использоваться 'myDefaults.draggable'. – Amasa
Да, вот что я подумал. Мне нужно, чтобы это было правдой, когда атрибут draggable существует, но не установлен, поэтому я боюсь :) – jonhobbs