我必须制作面包屑。所以我为此目的提供了服务。
我在HTML中使用ng-repeat
显示所有面包屑,我正在收听'$ routeChangeStart'事件以重置面包屑并用新内容填充它。
问题是:面包屑会暂时部分更新,然后完全更新。
让我告诉你。
'$ routeChangeStart'活动前的面包屑
数组内容:['Home', 'Product', 'Product Name']
在页面上显示:主页/产品/产品名称
'$ routeChangeStart'事件触发
数组内容:[]
在页面上显示:Home / Product / Product name
网页已满载
数组内容:['Home', 'New page']
在页面上显示:/ Home / New page / Home / Product / Product page
后几毫秒
在页面上显示:Home / New page
所以这是我的问题:这里发生了什么?
我已经尝试通过执行操作告诉angularjs数据已更改
$scope.$apply
,或$scope.$digest()
和$timeout()
没有成功。
我的面包屑正在使用一个呈现.html模板的指令。
指令:
app.directive('MenuTop', function(){
return {
restrict: 'E',
templateUrl: '/frontend/pages/menus/menu_top.html',
controller: ['$scope', 'Breadcrumb', function($scope, Breadcrumb){
$scope.Breadcrumb = Breadcrumb;
}]
};
});
面包屑服务:http://pastebin.com/GR8FTn3h
menu_top.html:http://pastebin.com/4j5m0PKA
答案 0 :(得分:0)
在指令内部,您可以为
指定值$scope.Breadcrumb = Breadcrumb
但它不会创造任何观察者。你应该做
$scope.$watch(
function() { return Breadcrumb; },
function (newValue) { $scope.Breadcrumb = newValue},
true
);
它将检查每个摘要周期的Breadcrumb值。 '真正的'最后意味着你需要深入检查,而不是参考检查。
范围文档:Angular docs