ng-show指令的属性是否等于value

时间:2017-02-09 07:26:14

标签: javascript angularjs

我有一个我在多个地方使用的指令,但是在一个指令中我需要匹配一个值来显示某些元素。以下对我不起作用。

<my-directive attr="my.value"></my-directive>

并在指令

<div ng-show="attr == 'my.value'"> Hello world </div>

指令:

'use strict';
module.exports = Directive;

function Directive(){
  return {
    restrict: 'E',
    templateUrl: 'directive.html',
    scope: {
      attr: '='
    }
  }
}

我做错了什么?

3 个答案:

答案 0 :(得分:0)

您使用的表达式会检查attr范围是否等于string'my.value'。

如果你想检查它是否等于my.value的值,你必须这样使用它。

<div ng-show="attr == my.value"> Hello world </div>

答案 1 :(得分:0)

你必须做这样的事情

https://jsfiddle.net/pdhm98s3/6/

<div ng-app="miniapp">
   <div ng-controller="myController">
      <my-directive attr="my.value"></my-directive>
   </div>
</div>


var app = angular.module('miniapp', []);

app.directive("myDirective", function() {
  return {
        "restrict": "E",
        "replace": true,
        "scope": {
            "myValue": "=attr"
         },
        "template": '<div ng-show="myValue"> Hello world </div>'
    } 
})

app.controller("myController", function($scope) {
   $scope.my = {
      "value": 1
   }
})

通过将控制器中的值更改为1和0来测试它

答案 2 :(得分:0)

你可以尝试“@”来绑定它适用于我的指令中的值

'use strict';
module.exports = Directive;

function Directive(){
  return {
    restrict: 'E',
    templateUrl: 'directive.html',
    scope: {
      attr: '@'
    }
  }
}