2016-11-17 43 views
0

爲什麼角度邏輯表達式在範圍內變化時不更新值?當範圍變化時,角度邏輯表達式不會更新

我有一個指令ng-show顯示一個div當邏輯是正確的:

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

說,例如:!

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

將隱藏在div(employee.name & &員工.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

輸入錯誤等待 –

+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',因爲它存儲爲字符串那裏' for employee.job =「false」== true'我如何使「false」= false在布爾錯誤? –