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
表現
ng-show="name.status_p1==working"
name.status_p1
を現在のスコープのworking
プロパティと比較しますが、これはあなたのケースでは定義されていません。必要なのは、リテラル文字列'working'
と比較することです。
ng-show="name.status_p1=='working'";
変更 Plunkr
私の場合、これがありました:
ng-show ="authenticated == {{it.logged_in_view}} || {{it.logged_in_view == 'neutral'}}"
これを次のように変更する必要がありました。
ng-show ='authenticated == {{it.logged_in_view}} || {{it.logged_in_view == "neutral"}}'
属性文字列を一重引用符で囲み、比較する文字列を二重引用符で囲みました。