Javascript 在$routeChangeSuccess上访问指令模板内的$scope

Javascript 在$routeChangeSuccess上访问指令模板内的$scope,javascript,angularjs,controller,scope,directive,Javascript,Angularjs,Controller,Scope,Directive,目前,我正在尝试编写一个面包屑,用于angular中的学习目的:)我正在等待$routeChangeSuccess事件,并用名称crumb填充一个数组。在面包屑模板中使用ng repeat读取此数组。我还想访问范围的变量。示例: app.directive('breadCrumb', ['$location', '$route', '$routeParams', function(location, route, routeParams) { return { link:

目前,我正在尝试编写一个面包屑,用于angular中的学习目的:)我正在等待$routeChangeSuccess事件,并用名称crumb填充一个数组。在面包屑模板中使用ng repeat读取此数组。我还想访问范围的变量。示例:

app.directive('breadCrumb', ['$location', '$route', '$routeParams', function(location, route, routeParams) {
    return {
        link: function($scope, element, attrs) {
             $scope.$on('$routeChangeSuccess', function(next, current) { 
                  var loc = location.path();
                  if(loc.indexOf('/users') >-1 && loc!='/users') 
                      $scope.crumb= [{href:"/users",val:"Meine Kommilitonen"}, 
                        {href:"/users/"+current.params.id,val: current.params.id}];
             });
         },
         template: '<div ng-bind="test"></div><div style="float:left" ng-repeat="item in crumb"><a href="{{item.href}}">{{item.val}}</a></div><div style="clear:both"></div>'
    }
}])
app.directive('breadCrumb'、['$location'、'$route'、'$routeParams',函数(位置、路线、路线图){
返回{
链接:函数($scope,element,attrs){
$scope.$on(“$routeChangeSuccess”,函数(下一个,当前){
var loc=location.path();
if(loc.indexOf('/users')>-1&&loc!='/users'))
$scope.crumb=[{href:“/users”,val:“Meine Kommilitonen”},
{href:“/users/”+current.params.id,val:current.params.id}];
});
},
模板:“”
}
}])
这个很好用。但是现在我想推送一个对象,比如{href:current.params.id,val:$scope.user.userName}这个值在控制器中,它为路由加载模板。如果我像{$route.current.scope.users.userName}那样直接在模板中编写它,那就很好了

现在,我如何将这个值推送到数组中,以便它绑定到div并被解释为控制器的值。希望你能理解我的问题


编辑:我已经搜索了很长时间了。我的需要是(我知道没有其他方法可以满足我的目的)我需要像这样编译s.th:{route.current.scope.user.userName}}在linkfunction的指令中

如果我理解正确,您的控制器中有一个值,您希望它在指令中可用吗

这可以通过属性(attrs)或双向数据绑定(scope)访问。我将展示双向绑定示例

JS(指令):

HTML:


另一种方法是使用attrs,不需要作用域,HTML也是一样的

<div bread-crumb my-value="someValue" ></div>

JS:

app.directive('breadCrumb', ['$location', '$route', '$routeParams', function(location, route, routeParams) {
    return {
        link: function(scope, element, attrs) {
             console.log(attrs.myValue); // the value on the directive
             // yourArray.push(attrs.myValue);

             scope.$on('$routeChangeSuccess', function(next, current) { 
                  var loc = location.path();
                  if(loc.indexOf('/users') >-1 && loc!='/users') 
                      scope.crumb= [{href:"/users",val:"Meine Kommilitonen"}, 
                        {href:"/users/"+current.params.id,val: current.params.id}];
             });
         },
         template: '<div ng-bind="test"></div><div style="float:left" ng-repeat="item in crumb"><a href="{{item.href}}">{{item.val}}</a></div><div style="clear:both"></div>'
    }
}])
app.directive('breadCrumb'、['$location'、'$route'、'$routeParams',函数(位置、路线、路线图){
返回{
链接:函数(范围、元素、属性){
console.log(attrs.myValue);//指令上的值
//yourArray.push(attrs.myValue);
作用域.$on(“$routeChangeSuccess”,函数(下一个,当前){
var loc=location.path();
if(loc.indexOf('/users')>-1&&loc!='/users'))
scope.crumb=[{href:“/users”,val:“Meine Kommilitonen”},
{href:“/users/”+current.params.id,val:current.params.id}];
});
},
模板:“”
}
}])

共享小提琴或弹琴,以便您获得更快的解决方案。不,对不起,我不是那个意思。我知道这是怎么回事。我想写s.th。如下所示:{href:'/users',val:{{users.name}}},其中users是在控制器中定义的val。但是我不想定义它,因为它应该很短(只是指令,没有更多)
<div bread-crumb my-value="someValue" ></div>
<div bread-crumb my-value="someValue" ></div>
app.directive('breadCrumb', ['$location', '$route', '$routeParams', function(location, route, routeParams) {
    return {
        link: function(scope, element, attrs) {
             console.log(attrs.myValue); // the value on the directive
             // yourArray.push(attrs.myValue);

             scope.$on('$routeChangeSuccess', function(next, current) { 
                  var loc = location.path();
                  if(loc.indexOf('/users') >-1 && loc!='/users') 
                      scope.crumb= [{href:"/users",val:"Meine Kommilitonen"}, 
                        {href:"/users/"+current.params.id,val: current.params.id}];
             });
         },
         template: '<div ng-bind="test"></div><div style="float:left" ng-repeat="item in crumb"><a href="{{item.href}}">{{item.val}}</a></div><div style="clear:both"></div>'
    }
}])