我有以下指令,对于所有其他情况,该指令正常工作:
.directive('breadcrumbs', function() {
return {
restrict: "E",
replace: true,
template: '<ul class="breadcrumb offset2" ng-show="breadcrumbs">'
+'<li ng-repeat="crumb in breadcrumbs">'
+'<span ng-hide="crumb[1]">{{crumb[0]}}</span>'
+'<a ng-show="crumb[1]" href="#{{crumb[1]}}">{{crumb[0]}}</a>'
+'<span ng-show="crumb[1]" class="divider">/</span>'
+'</li>'
+'</ul>'
}
}
它需要一组“crumbs”,每个crumb是一个包含['title', 'href']
的数组,例如:
$scope.breadcrumbs = [ ['Home', '/'], ['Projects', '/project'], ['Add', ''] ]
如果href
为空,则ngShow
/ ngHide
组合起来隐藏链接并仅输出文字。
当这成为一个问题时,我想从面包屑中的控制器输出$ scope变量,例如:
var ProjectViewCtrl = function ($scope, $routeParams, Project) {
$scope.project = Project.get({id: $routeParams.id})
$scope.breadcrumbs = [ ['Home', '/'], ['Projects', '/project'], ['{{project.name}}', ''] ]
}
目的是在{{project.name}}
输出面包屑的最后一个元素,然后一旦Project.get
完成,面包屑就会随着控制器模板中的其他内容一起更新。不幸的是,这不会发生,文本{{project.name}}
将输出到页面,永远不会更新。
我知道另一种方法是在Project.get
成功回调中设置面包屑,但这不会真正具有约束力,我只是更新了值,因此否定了其中一个主要原因。使用Angular:)
答案 0 :(得分:1)
请放弃这个小提琴http://jsfiddle.net/BJP3v/1/。 ng-bind
用于将动态项目名称绑定到视图。
然后,为了测试绑定是否有效,在控制器范围中创建了test
方法。
按下按钮时,项目名称将更新。请将项目名称的更新置于$http
来电或$resource
来电的回调中