/ / angularjs - pripojte filtre k smernici - angularjs

angularjs - pripojte filtre k smernici - angularjs

Použitím angular„Mám situáciu, keď som napísal vlastnú smernicu a potom niektoré filtre.

Veľa som hľadal a zatiaľ som nenašiel jasný spôsob, ako skutočne filtre zo smernice dostať. Sú pripevnené takto;

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

Smernica vyzerá ...

.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)
}
}
});

Práve teraz je filter iba extrémne holými kosťami. Zatiaľ som k tomu nepridal žiadnu skutočnú funkcionalitu, pretože veľa z toho, čo musím urobiť, je v smernici.

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

}
});

Takže v ngDataBind smernice, ktorú som napísal, chcem získať format filter a parameter, ktorý mu bol odovzdaný.

Pozrel som sa na $filter služba a zdá sa, že to nerobí. Pokúsil som sa to analyzovať z attributes parameter prešiel link o smernici, ale všetko, čo mi dáva, je obrovský reťazec, ktorý nie je taký užitočný.

Sú o tom niekde nejaké informácie?

Potom, čo ma posúdia ľudia s oveľa väčšími skúsenosťami v tejto oblasti než ja, volím iný prístup, pretože to zrejme nie je vhodné používanie filtrov.

Metóda, ktorou sa chystám, je vytvoriť vlastnosti pre smernicu, ktoré sú napríklad priradené ako výrazy.

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

Vybral som si túto metódu, pretože v očakávanom vstupe je určitá konzistencia (vždy vyžadujúca uzavretie obsahu "" namiesto nesúladu medzi typmi citácií) a umožňuje rozšírenie smernice bez toho, aby bolo potrebné neskôr pridávať ďalšie smernice. Nie som si istý, či je to dobrý prístup alebo nie, ale ... je to tak zdá pracovať.

odpovede:

1 pre odpoveď č. 1

Váš prístup je vypnutý. Smernica by sa nemala týkať filtra.

Filter spracuje viazané údaje podľa svojej logiky.

Smernica prijme filtrované údaje a bude podľa nich postupovať podľa svojej logiky.

Nikto z týchto dvoch nemusí vedieť o tom druhom. Ak to potrebujete, váš dizajn je chybný.

vidieť Separácie znepokojenia