/ / Angularjs URL को मूल कारण समस्या में बदल रहा है - jquery, angularjs, कोणीय-संसाधन

Angularjs URL को मूल कारण वाले मुद्दे में बदल रहा है - jquery, angularjs, कोणीय-संसाधन

मेरा आवेदन सिंगल पेज मॉडल पर आधारित है।मैं URL को बदलने के लिए JQuery के इतिहास ऑब्जेक्ट का उपयोग कर रहा हूं ताकि यदि उपयोगकर्ता एप्लिकेशन को रीफ्रेश करता है तो मैं एप्लिकेशन की स्थिति को बनाए रख सकता हूं जब उपयोगकर्ता ब्राउज़र को रीफ्रेश करता है। यह अच्छा काम कर रहा था लेकिन किसी तरह इसने काम करना बंद कर दिया। विश्लेषण के बाद मैंने पाया कि Angular.js संशोधित URL (Jquery History API द्वारा संशोधित) को मूल URL (URL जिसे एप्लिकेशन लॉन्च करने के लिए उपयोग किया गया था) में बदल रहा है। मैं हैरान और भ्रमित हूं कि अचानक कोणीय जेएस ने यूआरएल को रीसेट करना क्यों शुरू किया। मैंने बहुत कोशिश की लेकिन कोई मूल कारण नहीं खोज पाया। कृपया मदद करें और ब्राउज़र रिफ्रेश (या बैक बटन) पर उपयोगकर्ता स्थान को बनाए रखने के लिए अन्य संभावित दृष्टिकोण का भी सुझाव दें। निम्नलिखित अधिक विवरण हैं।

//Change the browser state to support History to launch file. It will remove projectid from URL and will add fileid
function updateBrowserStateOnFileLaunch(fileId, pageTitle, stateCounter)
{
//Get current URL
var finalURL = getNormalizedHashedURL("");
//Remove projectid query string from paramter if it has and update/add fileid
finalURL = updateQueryStringParameters(finalURL, [{key:"projectid", value:undefined}, {key:"fileid", value:fileId}]);
//Change history
History.pushState({state:stateCounter,rand:getTimestampId()}, pageTitle, finalURL);
}

ध्यान दें: पोस्ट को छोटा रखने के लिए "getNormalizedHashedURL" और "updateQueryStringParameters" विधि पर विवरण न जोड़ें।

मैं राज्य के आधार पर दृश्य बदलने के लिए ng-if का उपयोग कर रहा हूं।

<!-- File editor view -->
<div data-ng-if="currentView === 3">
<!-- Project File view-->
</div>

डिबग के दौरान, मैं देखता हूं कि निम्न पंक्ति निष्पादित करने के बाद कोणीय.js URL रीसेट कर रहा है।

मेरे एप्लिकेशन में कोड जो सर्वर से डेटा प्राप्त करने का प्रयास करता है:

 //get list of templates by making server call using Angular $resource object
Template.query({projectid: project._id}, function(response) {
//Processing of response
});

URL को रीसेट करने वाले कोणीय.js में कोड:

 $apply: function(expr) {
try {
beginPhase("$apply");
return this.$eval(expr);
} catch (e) {
$exceptionHandler(e);
} finally {
clearPhase();
try {
$rootScope.$digest(); **//At this line I find that URL is getting reset**
} catch (e) {
$exceptionHandler(e);
throw e;
}
}
},

कृपया मदद करे।

उत्तर:

उत्तर № 1 के लिए 6

से AngularJS में URL हेरफेर बंद करें

angular.module("sample", [])
.config( ["$provide", function ($provide){
$provide.decorator("$browser", ["$delegate", function ($delegate) {
$delegate.onUrlChange = function () {};
$delegate.url = function () { return ""};
return $delegate;
}]);
}]);