2013-02-20 47 views
9

के लिए आउटपुट एचटीएमएल पर फ़िल्टर लागू करना मैंने AngularJS autolink और nl2br में 2 फ़िल्टर बनाए।AngularJS

autolink: विशेषताओं rel="nofollow" target="_blank" के साथ एक <a> टैग के लिए एक URL स्ट्रिंग बदल देता है। मैंने लिंकी फ़िल्टर के साथ ngSanitize का उपयोग करने का प्रयास किया, लेकिन इसमें उपरोक्त 2 विशेषताओं को शामिल नहीं किया गया है, और न ही यह एक्साइजिंग एपीआई के साथ ऐसा करने का एक तरीका प्रदान करता है।

nl2br: नई लाइनों को <br> टैग में परिवर्तित करता है।

मैं {{ comment }} मेरी HTML में {{ comment | autolink | nl2br }} उपयोग करने के लिए इन 2 फिल्टर लागू करना चाहते हैं, लेकिन इससे पहले AngularJS HTML एस्केपिंग जो <a> और <br> में जो परिणाम के रूप में अच्छी तरह से भाग निकले जा करने के लिए करता है फिल्टर लागू होते हैं। असल में, मैं फ़िल्टर के बाद फ़िल्टर को लागू करना चाहता हूं।

क्या AngularJS के साथ ऐसा करने का कोई तरीका है?

उत्तर

13

आप अपने HTML में एक मानक प्रक्षेप है, कोणीय यह बच जाएगा:

<div> {{ var | filter1 | filter2 }} </div> 

पूरे अभिव्यक्ति का परिणाम छोड़ दिया जाएगा।

आप क्या चाहते हैं ng-bind-html-unsafe(docs here)। आप कर सकते हैं अभिव्यक्ति मूल रूप के रूप में ऊपर के रूप में एक ही बात:

<div ng-bind-html-unsafe='var | filter1 | filter2'></div> 

अब अभिव्यक्ति का परिणाम स्वच्छ नहीं किया जाएगा, और div की सामग्री के रूप में सम्मिलित किया जाएगा।

संपादित करें: नोट वहाँ भी ng-bind-html है कि, जो अभी भी HTML का उत्पादन करेगा, लेकिन पहले यह स्वच्छ होगा ($sanitize docs)।

ng-bind-htmlngSanitize मॉड्यूल में रहता है, इसलिए आपको यह सुनिश्चित करना होगा कि आपने इसे अपने angular.module कॉल में निर्भरता के रूप में घोषित कर दिया है।

+1

लेकिन मैं अपने मामले में, बचने के लिए टिप्पणी चाहता हूं; भागने के बाद लागू 2 फिल्टर के साथ। – ademers

+0

आह, फिर 'ng-bing-html-unsafe' के बजाय' ng-bind-html' का उपयोग करें। मैंने जवाब में इसे जोड़ा है। – satchmorun

+1

मैंने ऐसा किया जैसा कि मेरी मूल पोस्ट में बताया गया है। लेकिन मैं चाहता हूं कि सब कुछ बच निकले, फिर मेरे फ़िल्टर लागू करें। 'ng-bind-html' सुरक्षित रूप से कुछ HTML से बच जाएगा और अकेले कुछ बुनियादी HTML टैग छोड़ देगा। 'Ng-bind-html' के साथ, यह 'href' विशेषता को हटा देगा जिसे मैं अपने 'ऑटोलिंक' फ़िल्टर के साथ परिभाषित कर रहा हूं। – ademers