Próbuję dodać atrybut automatycznego odtwarzania do tagu wideo na podstawie zmiennej zasięgu is_autoplay.warunkowo dodaj atrybut elementu w angular.js
Przeszukałem cały Internet, ale nie mogłem znaleźć dokładnie tego fragmentu, który chciałem.
Próbowałem podążać, ale żaden z nich nie działa.
<video autoplay="{{is_autoplay ? 'true' : 'false'}}">
...
<video ng-attr-autoplay="{is_autoplay}">
...
Ktoś nawet zaproponował następującą
<video {{is_autoplay ? "autoplay" : ""}}>
...
Następujące rozwiązanie rozwiązało mój problem.
app.directive('attronoff', function() {
return {
link: function($scope, $element, $attrs) {
$scope.$watch(
function() { return $element.attr('data-attr-on'); },
function (newVal) {
var attr = $element.attr('data-attr-name');
if(!eval(newVal)) {
$element.removeAttr(attr);
}
else {
$element.attr(attr, attr);
}
}
);
}
};
});
Każdy może użyć tej dyrektywy, aby dodać/usunąć atrybut warunkowo.
Usage
<video width="100%" height="100%" controls attronoff data-attr-on="{{is_autoplay}}" data-attr-name="autoplay">
...
Wiem, że jest późno, ale może być przydatna. Dla kąta 1.3+ i atrybutu bez wartości (np. Autoplay lub wymagany) możesz użyć "niezdefiniowanego": ''. Został usunięty, ponieważ ng-attr- ma funkcję allOrNothing usuwania atrybutu, jeśli wyrażenie jest niezdefiniowane. –