2013-02-15 20 views
34

का उपयोग कर मुझे कोणीय जेएस के साथ समस्या हो रही है। मेरा एप्लिकेशन सर्वर से कुछ डेटा अनुरोध करता है और सर्वर से लौटाए गए डेटा से मूल्यों में से एक HTML की एक स्ट्रिंग है। मैं इसएनजी-बाइंड के अंदर पार्स एचटीएमएल angularJS

<div>{{{item.location_icons}}</div> 

की तरह मेरे कोणीय टेम्पलेट में यह बाध्यकारी रहा हूँ, लेकिन जैसा कि आप उम्मीद कर सकते हैं क्या मैं देख रहा हूँ माउस छवियों नहीं है, लेकिन मार्कअप मूल रूप से div में सामान की तरह

"<i class='my-icon-class'/>" 

लग रहा है जो वह नहीं है जो मैं चाहता हूं।

किसी को भी क्या मैं ट्रांसक्लुजन

उत्तर

36

आप उद्देश्य उस तरह के लिए ng-bind-html और ng-bind-html-unsafe उपयोग करना चाहते हैं एचटीएमएल पार्स करने के लिए क्या कर सकते हैं पता है।

उदाहरण दिखाए जाते हैं here

+0

मैं एनजी-बाइंड-एचटीएमएल के साथ इसका उपयोग कैसे करूं, मैं देखता हूं कि मैं एनजी-बाइंड-असुरक्षित-एचटीएमएल का उपयोग कैसे कर सकता हूं, यह सुनिश्चित नहीं है कि असुरक्षित यह सुझाव देने का एक तरीका है कि यह एक बुरा तरीका है बातें करना। क्या आप एनजी-बाइंड-एचटीएमएल पर विस्तार कर सकते हैं? कोणीय दस्तावेज़ इस पर बहुत स्पष्ट नहीं हैं। मैंने इसका उपयोग करने की कोशिश की और यह –

+1

काम नहीं किया, ईमानदारी से, मुझे बिल्कुल नहीं पता। लेकिन मेरी समझ यह है कि sanitizer टैग को किसी भी बाहरी संदर्भ, जैसे 'href',' src', आदि के साथ हटा देगा ... यदि आप उपयोगकर्ता इनपुट बाध्यकारी हैं, तो यह असुरक्षित हो सकता है, लेकिन आप अपने आंतरिक मूल्य के लिए बाध्यकारी हैं , मुझे लगता है कि गैर-sanitized संस्करण का उपयोग करना ठीक है। – Tosh

+10

'ng-bind-html'' ngSanitize' मॉड्यूल में है, जो 'ngResource' की तरह कोणीय के साथ प्रीपेक नहीं किया गया है। आपको स्क्रिप्ट शामिल करना होगा और सुनिश्चित करें कि आपका ऐप इस पर निर्भर करता है: 'var app = angular.module (' app ', [' ngSanitize ']); '। इसके बाद आपको 'एनजी-बाइंड-एचटीएमएल' निर्देश तक पहुंच होगी, जिसका आप उपयोग कर सकते हैं: '

' – satchmorun

8

एक बेहतर तरीका $compile बजाय ng-bind-html-unsafe उपयोग करने के लिए है।

देखें: http://docs.angularjs.org/api/ng.$compile

अन्त में, इस समय, AngularJS के पिछले संस्करण (रिलीज उम्मीदवार 1.2.0) किसी भी ng-bind-html-unsafe निर्देश नहीं है। तो मैं वास्तव में आपको अपने ऐप के भविष्य के अपडेट से पहले इस विकल्प पर विचार करने के लिए प्रोत्साहित करता हूं। (ng-bind-html-unsafe/किसी भी अधिक काम कर सकता है नहीं ...)

http://code.angularjs.org/1.2.0rc1/docs/api/ng.directive:ngBindHtml

+0

क्या आपका मतलब नहीं है [$ sanitize] (http: //docs.angularjs।$ compile के बजाय संगठन/api/ngSanitize। $ sanitize)? –

16

के रूप में एनजी-बाँध एचटीएम्एल असुरक्षित हटाई गई है, आप के बजाय इस कोड का उपयोग कर सकते हैं।

$scope.toTrustedHTML = function(html){ 
    return $sce.trustAsHtml(html); 
} 

और अपने ध्यान में रखते हुए कुछ इस तरह का उपयोग करें::

आप अपने नियंत्रक के अंदर समारोह बनाने की जरूरत

<span ng-bind-html='toTrustedHTML(myHTMLstring)'></span> 

मत भूलना $ SCE सुई:

AppObj.controller('MyController', function($scope, $sce) { 
    //your code here 
}); 
संबंधित मुद्दे