使用指令范围变量发出问题

时间:2015-09-17 08:40:05

标签: angularjs angularjs-directive

我的指令定义如下:

.directive('question', function() {
  return {
      restrict: 'AE',
      replace: 'true',
      templateUrl:'scripts/directives/questions/tpl.html',
      link: function($scope, $element,$attrs){},
      controller: function($scope, $element,$attrs,Type,Templates){

          $scope.editButtonVisible = false;
          if($scope.editMode == 'w'){
            $scope.editButtonVisible = true;
          }

      },
      scope: {
        editMode    : '=isReadOnly'
      }
  };
});

我的问题是,当我尝试将变量editButtonVisible与ngShow或ngSwitch一起使用时,它不起作用,例如以下示例:

<ANY ng-switch="editButtonVisible">
  <ANY ng-switch-value="true">
    <button>edit</button>
  </ANY>
  <ANY ng-switch-value="false">
    <h1>No button</h1>
  </ANY>
  <ANY ng-switch-default>
    <h1>Default action</h1>
  </ANY>
</ANY>

显示按钮,同时显示两个h1。

1 个答案:

答案 0 :(得分:0)

首先,您不需要为此方案定义另一个变量。

接下来,您的控制器可以导入&#39; $ scope&#39;,但没有像&#39; $ element&#39;,&#39; $ attrs&#39;为控制器。您可能会将功能签名与“链接”功能签名混淆。功能

接下来,您的链接&#39;功能签名是错误的。虽然控制器功能类似controller: function($scope),但链接功能如下:link: function(scope, element, attrs)。应该没有&#39; $&#39;登录。

看看下面的小提琴。

JSFiddle: Toggle enable using scope variable