2017-10-25 10 views
9

साथ मैं URL के साथ एक Kibana डैशबोर्ड है:कोणीय एनजी-एनआरटी में यूआरएल एन्कोड करता है और% 2F और '?' के साथ '/' को प्रतिस्थापित करता है % 3F

/logquery/app/kibana#/dashboard/Some-Dashboard?someParameters 

और मैं एक वेब अनुप्रयोग है, जिसमें मैं एक में ऊपर डैशबोर्ड एम्बेड करने के लिए कोशिश कर रहा हूँ है।

ctrl.dashboardUrl = $location.url().replace('/dashboards', ''); 

मेरी नजर में:

<div ng-controller="DashboardCtrl as ctrl"> 
    <div class="iframe-container"> 
     <iframe ng-src="{{ctrl.dashboardUrl | trustAsUrl}}" 
       height="100%" 
       width="100%" 
       ng-cloak 
       frameborder="0" 
       marginheight="0" 
       marginwidth="0"></iframe> 
    </div> 
</div> 

trustAsUrl फिल्टर इस प्रकार है:

वेब अनुप्रयोग में यूआरएल के रूप में

/dashboards/logquery/app/kibana#/dashboard/Some-Dashboard?someParameters 

और AngularJS में, मैं कर रहा हूँ इस प्रकार है

filtersGroup.filter('trustAsUrl', [ 
    '$sce', 
    function ($sce) { 
     return function (val) { 
      return $sce.trustAsResourceUrl(val); 
     }; 
    }]); 

एक घ मेरे पास है:

$locationProvider.html5Mode({ 
       enabled: true, 
       requireBase: false, 
       rewriteLinks: false 
      }); 

यह /kibana# के बाद / पात्रों का कारण बनता है %3F जो Kibana अनुरोध किया डैशबोर्ड ढूँढने में सक्षम नहीं होने के लिए कारणों के साथ %2F और ? साथ बदला जाएगा।

मैं इसे कैसे दूर कर सकता हूं? धन्यवाद!

+0

तो साथ यह डिकोड @MirazChowdhury यह एक फर्क नहीं करता है 'trustAsUrl' फिल्टर, ' एनजी-src = "{{ctrl.dashboardUrl}}" ' –

+0

का उपयोग नहीं करते कर सकते हैं। मेरे ज्ञान के लिए, यह वह हिस्सा नहीं है जो डैशबोर्ड यूआरएल को एन्कोड करता है। –

+2

क्या आप अपना कोड बेवकूफ़ बना सकते हैं? –

उत्तर

0

क्या हो रहा है AngularJS जो आप $location के साथ पठित अपनी पता बार में यूआरएल जोड़ तोड़ रहा है।

तो यूआरएल पढ़ने के बाद समस्या तब नहीं हो रही है और iframe में ngSrc के साथ डाल दिया गया है, लेकिन जब कोणीय पता बार में मूल यूआरएल का उपयोग करता है। तो आप मैन्युअल रूप से decodeURIComponent()

return $sce.trustAsResourceUrl(decodeURIComponent(val)); 
+1

@ हसन-कैन-सरल संपादन के लिए धन्यवाद, महान स्पष्टीकरण! – masterfloda

1

ऐसा लगता है कि समस्या vsprintf विधि है जो आपने अपने प्रश्नपत्र में छोड़ी थी लेकिन fiddle कोड में मौजूद है। मैंने पहेली को संशोधित किया और PHP vsprintf विधि के बजाय जावास्क्रिप्ट स्ट्रिंग इंटरपोलेशन का उपयोग किया और यह सही यूआरएल लौटा रहा है।

फिक्स:

पहले

vsprintf("%s://%s/%s", [$location.protocol(), $location.host(), $location.url().replace('/dashboards', '')]); 

बाद

ctrl.dashboardUri = `${$location.protocol()}://${$location.host()}/${$location.url().replace('/dashboards', '')}` 
+0

मुझे खेद है कि यह मामला नहीं है। मुझे आश्चर्य होगा अगर 'vsprintf' ने यूआरएल एन्कोड किया होगा। –

+0

कृपया बेवकूफ की जांच करें, जो बनाम बिना है और पूरी तरह से काम कर रहा है –

+0

कोणीय पहेली में यूआरएल का उपयोग नहीं करेगा। यह vsprintf के साथ भी काम करता है। –

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