亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AngularJS $ location不更改路徑

AngularJS $ location不更改路徑

largeQ 2019-11-26 14:25:36
提交表單后,更改頁面的URL時遇到問題。這是我的應用程序的流程:設置路由,URL被識別到某個表單頁面。頁面加載,控制器設置變量,指令被觸發。將觸發一個特殊格式指令,該指令使用AJAX執行特殊格式提交。執行完AJAX之后(Angular不會處理AJAX),則會觸發回調,并且偽指令調用$scope.onAfterSubmit設置位置的函數。問題在于設置位置后什么也沒發生。我也嘗試將位置參數設置/為……不。我也嘗試過不提交表格。什么都沒有。我已經測試過,看看代碼是否達到了onAfterSubmit功能(確實如此)。我唯一的想法是(由于從指令調用了它)以某種方式改變了函數的作用域,但是onAfterSubmit如果作用域改變了,那么又如何調用呢?這是我的代碼var Ctrl = function($scope, $location, $http) {  $http.get('/resources/' + $params.id + '/edit.json').success(function(data) {    $scope.resource = data;  });  $scope.onAfterSubmit = function() {    $location.path('/').replace();  };}Ctrl.$inject = ['$scope','$location','$http'];有人可以幫我嗎?
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

幾天前,我遇到了類似的問題。在我的情況下,問題是我使用第三方庫(準確地說是jQuery)更改了內容,在這種情況下,即使調用函數和設置變量有效,Angular也不總是知道有更改,因此從不進行摘要。


$ apply()用于從角度框架外部以角度執行表達式。(例如,來自瀏覽器DOM事件,setTimeout,XHR或第三方庫)。


$scope.$apply()更改位置并致電replace()Angular 后,請立即嘗試使用,以告知發生了變化。


查看完整回答
反對 回復 2019-11-26
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

代替$ location.path(...)來更改或刷新我使用該服務的頁面$window,在Angular中,此服務用作window對象的接口,并且該window對象包含location使您能夠處理與位置相關的操作的屬性或網址內容。


例如,window.location您可以分配一個新頁面,如下所示:


$window.location.assign('/');

或刷新它,如下所示:


$window.location.reload();

它為我工作。它與您的預期有所不同,但可以實現給定的目標。


查看完整回答
反對 回復 2019-11-26
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

我遇到了同樣的問題,但是我對$ location的調用已經在摘要中了。調用$ apply()只會產生一個$ digest已經在處理中的錯誤。


這個技巧奏效了(并確保注入$location到您的控制器中):


$timeout(function(){ 

   $location...

},1);

雖然不知道為什么這是必要的...


查看完整回答
反對 回復 2019-11-26
  • 3 回答
  • 0 關注
  • 713 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號