我意识到之前已经提出过这个问题。 但是没有一个答案可以解决这个问题。
我对Angular有一定的了解并且产生了很多角度代码,我不是一个完整的初学者。
我已经开始研究MEAN应用程序,因此所有客户端都是Angular。经过两天将我的头撞在墙上,我无法获得一个非常简单的location.path(newPath)来处理控制器$ scope中的函数。
'use strict';
angular.module('core').controller('HeaderController',
[ '$scope',
'$location',
function($scope, $location) {
//THIS LINE OF CODE, ON ARRIVAL IN THE CONTROLLER, WORKS
//- it changes the path no problem.
//$location.path('/it/vino/chianti/ChiantiClassico');
//But trying to set $location.path() DOES NOT WORK IN THE
//FOLLOWING FUNCTION.
//This function is called correctly from an ng-click event on a link.
//Therefore there should be no need to call apply().
//However I have also tried both $apply and $timeout.
$scope.changeLanguage = function(lang){
//Right, let's try setting the path..
$location.path('/it/vino/chianti/ChiantiClassico');
//now we log $location.path() in the console and it
//gives the correct answer, which is:
//'/it/vino/chianti/ChiantiClassico',
//(but the path does not actually change in the browser address bar).
console.log('$location.path():', $location.path()); //correct!
//But if I also log the location object and I look inside,
//the path hasn't changed there !
console.log('$location:', $location); //The path is the old one!
//And the address bar has not changed
};
}//end function
]);
我已经调试并搜索了寻找另一个$ location对象或其他错误的对象。 - 但是只有一个$ location对象 - 可以在'关闭'堆栈的一部分。
我在这里看不到任何类型的回调错误,我并没有尝试使用尚未定义的对象或类似的东西。
以下是来自视图的调用链接代码的完整性,这里没什么奇怪的,我也试过从按钮调用,该函数被正确调用:
<a href="javascript:;" data-ng-click="changeLanguage('it')">italiano</a>
答案 0 :(得分:1)
我在同一个问题上挣扎了一段时间。问题是使用新创建的对象的ID更新URL(ID由DB生成并在保存过程中检索)。
对我来说效果很好的只是:
$window.location.assign(newURL);
答案 1 :(得分:0)
可能是你的问题是点击标签做一些导航......
不是真的&#39;回答,但有一些方法可以探索:
希望它可以帮助..
答案 2 :(得分:0)
我遇到同样的问题,最后,我使用这段代码: $ window.location =&#39; /#/ path / to / xx&#39; :