私が構築しているAngularベースのサイトがあり、完全に困惑している奇妙なエラーに遭遇しました。法律事務所用です。プルダウン メニューの 1 つに弁護士のリストがあります。いずれかをクリックすると、彼のページが正常に読み込まれます。次に別の弁護士をクリックすると、URL は適切な URL に変わりますが、2 つの奇妙なことが起こります。
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);
});
}]);
この動作を確認できる URL は次のとおりです。
http://www.gelerinter.com/dev_sites/lksu
上部のナビゲーションで [ATTORNEYS] をクリックし、最初の 1 つを選択します。次に、彼のページでもう一度 ATTORNEYS をクリックし、Mitchell Goldberg を選択します。URL の変更が表示されますが、すべてがロックされます。