web-dev-qa-db-ja.com

カスタムディレクティブ内のng-showの文字列値を比較する方法は?

Ng-showステートメントを含むディレクティブを使用しようとしています。基本的には、「名前」jsonarrayのstatus_p1プロパティである文字列の値に対してチェックします。

ng-show="name.status_p1==working"

ディレクティブは次のように定義されます:

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>'
  };
})

メインページのcontroller + namesarrayは次のようになります。

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

  ]
});

そして最後にメインページ:

<body ng-controller="MainCtrl">
    <div ng-repeat="name in names">
      <radio-button></radio-button>
    </div>
</body>

現在、チェック/チェックを表示するはずの場所に十字が表示されます。 status_p1プロパティが「working」に等しいため、条件がTRUEと評価されることを期待していました。このng-showstatementを変更して文字列比較を機能させるにはどうすればよいですか? plunkrリンク: http://plnkr.co/edit/3VdsbsSHpkNJFVnvkmOW?p=preview

20
Pindakaas

表現

ng-show="name.status_p1==working"

name.status_p1を現在のスコープのworkingプロパティと比較しますが、これはあなたのケースでは定義されていません。必要なのは、リテラル文字列'working'と比較することです。

ng-show="name.status_p1=='working'";

変更 Plunkr

43
c.P.u1

私の場合、これがありました:

ng-show ="authenticated == {{it.logged_in_view}} || {{it.logged_in_view == 'neutral'}}"

これを次のように変更する必要がありました。

ng-show ='authenticated == {{it.logged_in_view}} || {{it.logged_in_view == "neutral"}}'

属性文字列を一重引用符で囲み、比較する文字列を二重引用符で囲みました。

2
wcyn