document.location.href不能始终如一地工作

时间:2015-05-14 16:37:09

标签: javascript angularjs location-href

我有一个基于Angular的网站,我正在构建,而且我遇到了一个奇怪的错误,我完全难以接受。这是一家律师事务所。其中一个下拉菜单是律师名单。当我点击一个,他的页面加载很好。如果我去点击不同的律师,网址会更改为正确的网址,但会发生两件奇怪的事情。

1)它实际上并没有去那里。 2)整个下拉阴影就好像它的中间点击一样,似乎卡在那里。

而不是在这里屠宰代码,我认为我只是链接到网站,所以你可以看到它在行动。但是,我会将相关控制器复制到此处,因为我不确定您是否能够轻松地看到这一点。

同样,除非我在另一位律师的生物页面上点击了律师的名字,否则一切都会完美无缺。

AttorneyController.js

app.controller('AttorneyController', ['$scope', '$location', 'attorneys', '$sce', function($scope, $location, attorneys, $sce) {

var quotelist = [];

$scope.myFunctions = {};

var practiceareas = {
    altdispute: "Alternative Dispute Resolution",
    businesscorp: "Businesses & Corporations",
    estateplanning: "Estate Planning",
    futures: "Futures & Derivatives",
    litigation: "Litigation",
    productliability: "Product Liability",
    realestate: "Real Estate",
    securities: "Securities"
};

// Load bio content 
$scope.myFunctions.load_bio = function(bioNum){
    var urlstr = $basehref + "bio.php#/?bio_id=" + bioNum;
    document.location.href = urlstr;
}

attorneys.success(function(data){
    var quotelist = [];

    function quoteflip(quotelist, id, total){

        window.clearTimeout(timeoutQuotes); 

        var src1 = quotelist[id];

        $("#bio_quotes").fadeOut(500, function(){
            $("#bio_quotes").html(src1).fadeIn(500);
        });

        var idno = (id + 1) % total;

        var timeoutQuotes =  window.setTimeout(function(){quoteflip(quotelist, idno, quotelist.length);}, 5000);
    }

    if($location.search().bio_id > 0){
        $scope.myFunctions.bio_id = $location.search().bio_id;
        var matches = $.grep(data.attorneys, function(obj) { return obj.id == $location.search().bio_id; });

        if (matches.length === 1) {
            $scope.thisAttorney = matches[0];
            quotelist = $scope.thisAttorney.quotes;
            $("#bio_quotes").html(quotelist[0]);
        }

    }else{
        $scope.myFunctions.bio_id = 0;
    };

    $scope.attorneys = data.attorneys;
    $scope.practiceareas = practiceareas;

    var timeoutQuotes =  window.setTimeout(function(){quoteflip(quotelist, 1, quotelist.length);}, 5000);

});


}]);

要查看此操作的网址是

http://www.gelerinter.com/dev_sites/lksu

点击顶部导航栏中的ATTORNEYS并选择第一个。然后,在他的页面上,再次单击“ATTORNEYS”并选择Mitchell Goldberg。 您将看到网址更改,但所有内容都已锁定。

1 个答案:

答案 0 :(得分:0)

请勿尝试手动设置document.location.href,而是使用路由提供程序或位置服务。