2016-11-17 10 views
0

スコープの内部が変更されたときに角論理式が値を更新しないのはなぜですか? !!(employee.name & &従業員がスコープの変更時に角論理式が更新されない

$scope.employee.name = true; 
$scope.employee.job = false; 

はdiv要素を隠します:

<div ng-show="!employee.name && !employee.job"></div> 

は、例えば言う:

私はロジックが真であるときのdivを示しディレクティブng-showを持っています.job == false)。我々は、動的に使用して従業員を変更した場合でも、$http角度:

$http.get('/api/job'). 
success(function(data) { 
    $scope.employee.name = data.name; // false 
    $scope.employee.job = data.job; // false 
}); // !employee.name && !employee.job == true 

は、ビュー内の論理値は変更されません:

<td><% employee.name %></td> <!-- false--> 
<td><% employee.job %></td> <!-- false--> 
<!-- !false && !false == true --> 
<td><% !employee.name && !employee.job %></td> <!-- STILL FALSE --> 
<!-- funny thing is no error occurred --> 

ザッツをdiv要素が成功$http requestロジックがないためにませショーを行う理由は更新されますか?

<div ng-show="!employee.name && !employee.job"></div> <!-- does not show --> 
+0

前の状態で残っている場合であれば例えば、下にあなたの価値をチェックどちらも偽です – charlietfl

+0

typo error wait –

+0

問題を再現するデモを作成します。 – charlietfl

答えて

0

var emp= { 
name:undefined, 
    job:false 
} 

のような変更は、その後ng-showは、あなたのロジックが後方で、場合にのみ表示されるでしょう

var app = angular.module("myapp", []); 
 
app.controller("myCtrl", ['$scope', function($scope) { 
 
    
 
    var emp= { 
 
    name:false, 
 
    job:false 
 
    } 
 
    
 
    
 
    $scope.employee = emp; 
 

 
    
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myapp"> 
 
    <div ng-controller="myCtrl">  
 
    Name: {{employee.name}} <br/> 
 
    Job: {{employee.job}} <br/> 
 
    <br/> 
 
    Condition Status : {{!employee.name && !employee.job}} 
 
    
 
    <div ng-show="!employee.name && !employee.job"> 
 
     <h1>Div </h1> 
 
    </div> 
 
    
 
    </div> 
 
</div>

+0

$ scope.employee.name&$ scope.employee.jobが定義されていない値を取得しているために@Harish Kommuriの解決方法 – Pravin

+0

どうしたのか分かりませんでしたが、 'employee.job == true'という文字列が' employee.job = "false" == true'どうすれば "false"をfalseにするかfalseをfalseにしますか? –

関連する問題