AngularJS有条件地添加自定义';数据切换';属性

AngularJS有条件地添加自定义';数据切换';属性,angularjs,Angularjs,我有以下指示: myDirective.directive('sidebar', function () { return { restrict: 'E', replace: true, template: '<li ng-repeat="m in menu" ng-class="{\'dropdown\':m.submenu}">' + '<a href="{{m.url}}" ng-class="{\'dropdown-toggle\

我有以下指示:

myDirective.directive('sidebar', function () {
  return {
    restrict: 'E',
    replace: true,
    template: '<li ng-repeat="m in menu" ng-class="{\'dropdown\':m.submenu}">' +
      '<a href="{{m.url}}" ng-class="{\'dropdown-toggle\':m.submenu}" ng-attr="{\'data-toggle=dropdown\': m.submenu">' +
      '<i class="{{m.image}}"></i>' +
      ' {{m.name}}' +
      '<b class="caret" ng-if="m.submenu"></b>' +
      '</a>' +
      '<ul ng-if="m.submenu" class="dropdown-menu">' +
      '<li ng-repeat="s in m.submenu"><a href="{{s.url}}"><i class="{{s.image}}"></i> {{s.name}}</a></li>' +
      '</ul>' +
      '</li>',

    link: function (scope, elem, attrs) {
      scope.menu = [
        {
          "name": "Home",
          "url": "/",
          "image": "fa fa-bar-chart-o"
        },
        {
          "name": "Data Integration",
          "url": "/manage/dataintegration/index",
          "image": "fa fa-dashboard"
        },
        {
          "name": "Users",
          "url": "/manage/users/index",
          "image": "fa fa-dashboard"
        },
        {
          "name": "Logger",
          "url": "/manage/logger/index",
          "image": "fa fa-dashboard"
        },
        {
          "name": "Drop",
          "url": "",
          "image": "fa fa-dashboard",
          "submenu": [
            {
              "name": "Logger",
              "url": "/manage/logger/index",
              "image": "fa fa-dashboard"
            },
            {
              "name": "Logger2",
              "url": "/manage/logger/index",
              "image": "fa fa-dashboard"
            }
          ]
        }
      ]

    }
  }
});
myDirective.directive('sidebar',函数(){
返回{
限制:'E',
替换:正确,
模板:“
  • ”+ '' + “
      ”+ “
    • ”+ “
    ”+ “
  • ”, 链接:功能(范围、要素、属性){ scope.menu=[ { “姓名”:“家”, “url”:“/”, “图像”:“fa-bar-chart-o” }, { “名称”:“数据集成”, “url”:“/manage/dataintegration/index”, “图像”:“fa仪表板” }, { “名称”:“用户”, “url”:“/管理/用户/索引”, “图像”:“fa仪表板” }, { “名称”:“记录器”, “url”:“/管理/记录器/索引”, “图像”:“fa仪表板” }, { “名称”:“删除”, “url”:“, “图像”:“fa仪表板”, “子菜单”:[ { “名称”:“记录器”, “url”:“/管理/记录器/索引”, “图像”:“fa仪表板” }, { “名称”:“Logger2”, “url”:“/管理/记录器/索引”, “图像”:“fa仪表板” } ] } ] } } });

    仅当使用
    ng attr
    存在
    m.submenu
    时,我才尝试将
    数据切换
    属性设置为
    a
    标记,但它不起作用。

    假设是逐字设置的:

    ng-attr="{\'data-toggle=dropdown\': m.submenu"
    

    缺少结束语
    }

    对于我来说,
    ng attr
    根本不起作用,你可以试试这个

    ng-attr-data-toggle="{{m.submenu && 'dropdown' || null}}"
    

    但即使m.submenu为false,它也会删除没有该值的属性。希望能有所帮助。

    你能在小提琴/普朗克中重现这种行为吗?你使用的是哪种版本的angular?ng attr是在1.1.4中添加的。@GruffBunny我使用的是1.2.2