2015-08-07 9 views
5

मैं एक angularjs एकल पेज एप्लिकेशन बना रहा हूं। डेटा json -format में एक webservice से लाया जाएगा।anguarjs के साथ कच्चे HTML को कैसे प्रस्तुत करें?

समस्या

कि कुछ पाठ तत्वों पूर्वस्वरूपित html टैग

के साथ आते है

json उत्पादन:

{ 
    "text": "<p><span style="text-decoration: underline;"><strong>test text</string></span></p>" 
} 

अब मैं इस पाठ को प्रदर्शित करने और एचटीएमएल सीधे प्रस्तुत करना है, इसलिए केवल "परीक्षण" है कि कर सकते हैं उपयोगकर्ता को दिखाया गया है और बाकी मार्कअप के रूप में कार्य करता है?

<h1>{{data.text}}</h1> 
+0

इस मदद कर सकता है? http://stackoverflow.com/questions/9381926/insert-html-into-view-using-angularjs – Baart

उत्तर

6

आपको अपने एच 1 टैग में ng-bind-html="data.text" जोड़ने की आवश्यकता है।

<h1 ng-bind-html="data.text"></h1> 

प्रलेखन:: ngBindHtml

+0

यह वादा करता है, हालांकि जब मैं इसका उपयोग करता हूं तो मुझे अब कोई खाली तत्व दिखाई नहीं देता है, केवल एक खाली तत्व। – membersound

+0

@membersound आपको लगता है कि आपके जेसन में समस्याएं हैं। आपके एट्रिब्यूट स्टूल को '' 'के बजाय' '' का उपयोग करना चाहिए, अन्यथा यह सबकुछ तोड़ता है। लेकिन शायद यह सिर्फ एक टाइपो है। –

+0

यह मेरे उदाहरण में सिर्फ एक टाइपो है। – membersound

-1

कोशिश इस https://docs.angularjs.org/api/ng/directive/ngBind

<script> 
    angular.module('bindExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
     $scope.name = 'Whirled'; 
    }]); 
</script> 
<div ng-controller="ExampleController"> 
    <label>Enter name: <input type="text" ng-model="name"></label><br> 
    Hello <span ng-bind="name"></span>! 
</div> 
+2

वह एचटीएमएल प्रिंट करना चाहता था, एक साधारण var नहीं। –

3

Update2 उपयोग करने के लिए: जैसे

अपने HTML लगेगा यह आप के लिए एचटीएमएल पट्टी के लिए संभव है? यह इतना किया जा सकता है:

angular.module('myApp.filters', []). 
    filter('htmlToPlaintext', function() { 
     return function(text) { 
     return String(text).replace(/<[^>]+>/gm, ''); 
     }; 
    } 
); 

और आप HTML:

<div>{{myText | htmlToPlaintext}}</div> 

अधिक जानकारी देखें: angularjs to output plain text instead of html

अपडेट: तुम सच में अपने json से एचटीएमएल की ज़रूरत है? अपने एचटीएमएल को विचारों में स्टोर करना और अपने जेसन से डेटा प्राप्त करना बेहतर है। अच्छा अलगाव और उपयोग करने में बहुत आसान है।

यह संभव है, लेकिन गैर-एचटीएमएल (महान सुरक्षा) के रूप में इतना आसान नहीं है।

कोणीय 1.3 में आप इस प्रकार की जरूरत है:

<div ng-bind-html="htmlBind"></div> 

अपने नियंत्रक में इस जोड़ें:

$scope.htmlBind = $sce.trustAsHtml('<span>Hi, I am <em>Joe</em>'); 

स्पष्टीकरण:

$ SCE एक है: आप $ SCE देखना सेवा जो AngularJS को सख्त प्रासंगिक एक्सेकिंग सेवाएं प्रदान करती है।

trustAs (प्रकार, मूल्य)

$ sceDelegate.trustAs के प्रतिनिधियों। इस प्रकार, एक ऑब्जेक्ट लौटाता है जो निर्दिष्ट सख्त प्रासंगिक भागने वाले संदर्भों (जैसे एनजी-बाइंड-एचटीएमएल, एनजी-शामिल, किसी भी स्रोत विशेषता इंटरपोलेशन, किसी भी डोम इवेंट बाध्यकारी विशेषता इंटरपोलेशन जैसे ऑनक्लिक इत्यादि) में उपयोग के लिए कोणीय द्वारा भरोसा किया जाता है।) जो प्रदत्त मूल्य का उपयोग करता है। सख्त प्रासंगिक भागने को सक्षम करने के लिए * $ sce देखें।

यहां अधिक पढ़ें:

+0

क्या यह सीधे एचटीएमएल के भीतर हल करना संभव है? क्योंकि मुझे 'जेसन' प्रतिक्रिया मिल रही है और गतिशील रूप से एचटीएमएल के तत्वों को '

'नियंत्रक के भीतर से' $ sce' को कॉल किए बिना। – membersound

+0

मैं जेसन प्रतिक्रिया को नियंत्रित नहीं कर सकता, और इस प्रकार मुझे प्रीफॉर्मेट किए गए HTML मार्कअप को संसाधित करने के लिए मजबूर किया गया है। – membersound

+0

मेरा अपडेट देखें उत्तर – schellingerht

संबंधित मुद्दे