2015-09-13 58 views
0

我的應用程序接收到一個帶有兩個布爾值的JSON對象。使用JSON數據在控制器中分配範圍變量,而不是查看

$http.post('url-here', {"token": token }) 
     .success(function(data) {$scope.tokenValidate = data;}); 

這是JSON對象我收到:

{valid: true, expired: false} 

我可以使用下面的我的視圖中訪問此數據:

我使用下面的訪問在我的控制器JSON數據
{{ tokenValidate.valid }} or {{ tokenValidate.expired }} 

相反,因爲這樣我創建我的看法,我想用這些布爾值從控制器內指定字符串變量的範圍,像這樣:

if ($scope.tokenValidate.valid) { 
    $scope.header = "Choose a new password"; 
} else if ($scope.tokenValidate.expired) { 
    $scope.header = "This link has expired."; 
    $scope.mesage = "Enter your email address to receive a new link." 
} else { 
    $scope.header = "This link is invalid." 
} 

當我這樣做時,控制器無法正確讀取JSON數據。

TypeError: Cannot read property 'valid' of undefined 

任何幫助?我的猜測是,當我從視圖訪問JSON時,它已經被加載,但是當我嘗試從控制器訪問它時,它還有一些事實,但尚未分配$scope.tokenValidate

+0

你是什麼意思由未能正確讀取JSON數據?任何細節或錯誤或任何錯誤的例子? –

+0

控制檯中會出現一些錯誤 – maddygoround

+0

如果在成功回調$ http的情況下是否處理上述情況? 和'$ scope.tokenValidate.valid'和'$ scope.tokenValidate.expired'給出布爾值或字符串? – Rahul

回答

0

也許值是字符串,而不是bool的

if ($scope.tokenValidate.valid=='true') { 
    $scope.header = "Choose a new password"; 
} else if ($scope.tokenValidate.expired=='true') { 
    $scope.header = "This link has expired."; 
    $scope.mesage = "Enter your email address to receive a new link." 
} else { 
    $scope.header = "This link is invalid." 
} 
0

您使用返回的JSON數據之前,先對其進行分析,然後使用它。

$http.post('url-here', {"token": token }) 
    .then(function(data) { 
    var data=JSON.parse(data); 
    if (data.valid) { 
     $scope.header = "Choose a new password"; 
    } else if (data.expired) { 
     $scope.header = "This link has expired."; 
     $scope.mesage = "Enter your email address to receive a new link." 
    } else { 
    $scope.header = "This link is invalid." 
    }  

    }); 
相關問題