如何在一个customdirective中比较ng-show中的字符串值?

Pin*_*aas 20 angularjs angularjs-directive angularjs-ng-repeat

尝试使用带有ng-show语句的指令.基本上它会检查字符串的值,这是我的'names'jsonarray中的status_p1属性:

ng-show="name.status_p1==working"
Run Code Online (Sandbox Code Playgroud)

该指令定义如下:

app.directive('radioButton',function(){
  return {
    restrict: 'E',

    replace: 'true',

    template: '<table border="2px">' +
    '<tr><td>{{name.name}}</td><td>Working</td><td><img src="http://www.iconshock.com/img_jpg/REALVISTA/general/jpg/256/cross_icon.jpg" alt="img1" id="imgworking" ng-show="name.status_p1!=working"><img src="http://png-1.findicons.com/files/icons/2198/dark_glass/128/camera_test.png" alt="img2" ng-show="name.status_p1==working"></td></tr>' +
    '</table>'
  };
})
Run Code Online (Sandbox Code Playgroud)

我的主页面中的控制器+ namesarray如下所示:

 app.controller('MainCtrl', function($scope) {
 $scope.names = [
    {
      name: 'couple 1',
      status_p1: 'working',
      status_p2: 'retired'
    }

  ]
});
Run Code Online (Sandbox Code Playgroud)

最后是主页:

<body ng-controller="MainCtrl">
    <div ng-repeat="name in names">
      <radio-button></radio-button>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

当前显示一个十字架,它应显示一个检查/勾选.我期望条件评估为TRUE,因为status_p1属性等于'working'.如何修改此ng-showstatement以使字符串比较有效?plunkr链接:http://plnkr.co/edit/3VdsbsSHpkNJFVnvkmOW?p = preview

c.P*_*.u1 43

表达方式

ng-show="name.status_p1==working"
Run Code Online (Sandbox Code Playgroud)

name.status_p1working当前范围的属性进行比较,在您的情况下未定义.你需要的是将它与文字字符串进行比较'working'.

ng-show="name.status_p1=='working'";
Run Code Online (Sandbox Code Playgroud)

改良的Plunkr

  • 因为你的模板字符串是用单引号分隔的,所以你需要转义`\'working \'`周围的单引号.检查修改过的plunkr. (7认同)