パンくずリスト 別タブページ遷移後 自動展開

Toshiakiki
Tera Contributor

パンくずリストのウィジェットが別タブでページ遷移したときに正しく表示されない。コードをどのように修正したらいいですか.
例えば以下のように"purot"を押してページ遷移したら、All categories,AAE,puroがパンくずリストから消えてしまいます。スクリーンショット (4).png

1件の返信1

iwai
Giga Sage

パンくずリストが消えてしまう原因は、その情報からは不明ですが、処理しているWidgetはわかります。

Widget "breadcrumbs" で パンくずリストを表示しています。そのソースコードのClient controllerを見てみると、表示だけしていて表示するデータは別の処理から"sp.update.breadcrumbs"のイベントとしてデータを受け取っています。

function($scope, $rootScope, spUtil) {
	var c = this;
	c.expanded = !spUtil.isMobile();
	c.expand = function() {
		c.expanded = true;
	};

	var deregister = $rootScope.$on("sp.update.breadcrumbs", function(e, list) {
		c.breadcrumbs = list;
	});

	$scope.$on('$destroy', function(){
		deregister();
	});

}

別の処理例として"SC Category Page"のClient controllerでは以下のようになっています。

$scope.data.categories 変数に パンくずリストを格納しています。

	function loadPage() {
		$scope.hideItemWidget = !$scope.data.category_id;
		if ($scope.data.category) {
			if (!$scope.data.categories)
				$scope.data.categories = [];
			
			$scope.data.categories.forEach(function(category, index, categories) {
				categories[index].url = category.url + '&catalog_id=' + $scope.data.catalog_id;
			});
			
			if ($scope.data.sc_catalog)
				$scope.data.categories.unshift({label: $scope.data.sc_catalog, url: '?id=' + $scope.data.sc_category_page + '&catalog_id=' + $scope.data.catalog_id});
			
			if ($scope.data.show_popular_item) {
				if ($scope.data.all_catalog_msg)
					$scope.data.categories.unshift({label: $scope.data.all_catalog_msg, url: '?id=' + $scope.data.sc_category_page + '&catalog_id=-1'});
				else
					$scope.data.categories.push({label: $scope.data.all_cat_msg, url: '#'});
			} else {
				if ($scope.data.all_catalog_msg)
					$scope.data.categories.unshift({label: $scope.data.all_catalog_msg, url: '?id=' + $scope.data.sc_category_page + '&catalog_id=-1'});

				$scope.data.categories.push({label: $scope.data.category.title, url: '#'});
			}
			$timeout(function() {
				$rootScope.$broadcast('sp.update.breadcrumbs', $scope.data.categories);
			});
			spUtil.setSearchPage('sc');
			spAriaUtil.sendLiveMessage($scope.data.category.title + ' ' + $scope.data.categorySelected);
			i18n.getMessage("Category page {0}", function (template) {
				$scope.data.categoryPageAriaLabel = i18n.format(template, $scope.data.category.title);
			});
		}
	}