/ / angularjs - pobierz filtry dołączone do dyrektywy - angularjs

angularjs - pobierz filtry dołączone do dyrektywy - angularjs

Za pomocą angular, mam sytuację, w której napisałem niestandardową dyrektywę, a następnie kilka filtrów.

Przeprowadziłem wiele poszukiwań i nie byłem w stanie znaleźć jasnego sposobu na usunięcie filtrów z dyrektywy po dołączeniu. Są one dołączone w ten sposób;

<div ng-data-bind="Model.Tags | format:"json""></div>

Dyrektywa wygląda jak...

.directive("ngDataBind", ["$parse", "$filter", function($parse, $filter){
return {
restrict: "A",
scope: {
ngDataBind: "="
},
link: function(scope, element, attributes, controller) {
// I am hoping to get the value of "format" here (which is "json" in this case)
}
}
});

W tej chwili filtr to tylko ekstremalnie nagie kości. Nie dodałem jeszcze do niego żadnej prawdziwej funkcjonalności, ponieważ wiele z tego, co muszę zrobić, jest w dyrektywie.

.filter("format", function(){
return function(text, value) {

}
});

Tak więc w ngDataBind dyrektywy, którą pisałem, chcę uzyskać format filtr i przekazany do niego parametr.

Spojrzałem na $filter usługa i wydaje się, że tego nie robi. Próbowałem przeanalizować to z attributes przekazany parametr link w sprawie dyrektywy, ale wszystko, co mi daje, to ogromny ciąg, który nie jest aż tak użyteczny.

Czy są jakieś informacje na ten temat, gdziekolwiek?

Po sprawdzeniu przez osoby z dużo większym doświadczeniem w tym zakresie niż ja, przyjmuję inne podejście, ponieważ najwyraźniej nie jest to właściwe użycie filtrów.

Metoda, którą zamierzam, polega na stworzeniu właściwości w dyrektywie, które są przypisane jak wyrażenia, na przykład...

<div c-data-bind="{ value: "Model.Tags", format: "json" }"></div>

Poszedłem z tą metodą, ponieważ istnieje pewna spójność w oczekiwanych danych wejściowych (zawsze wymaga, aby treść była zawarta w "" zamiast niezgodności między typami cytatów) i umożliwia rozszerzenie dyrektywy bez konieczności późniejszego dodawania kolejnych dyrektyw. Nie jestem pewien, czy to dobre podejście, czy nie, ale… to wydaje się do pracy.

Odpowiedzi:

1 dla odpowiedzi № 1

Twoje podejście jest nie do przyjęcia. Dyrektywa nie powinna zajmować się filtrem.

Filtr przetworzy powiązane dane zgodnie ze swoją logiką.

Dyrektywa otrzyma przefiltrowane dane i będzie na nich działać zgodnie ze swoją logiką.

Żaden z nich nie musi wiedzieć o drugim. Jeśli ich potrzebujesz, Twój projekt jest wadliwy.

Widzieć Separacje troski