2016-09-27 79 views
0

所以我這需要兩個特定參數的狀態(subjectID & isCalc):AngularJS布爾值總是在範圍返回true

.state('tabsController.formulaPicker', { 
    url: '/my/:subjectID?withCalc', 
    views: { 
     'tab1': { 
     templateUrl: 'templates/formulaPicker.html', 
     controller: 'formulaPickerCtrl' 
     } 
    } 
    }) 

&在我的控制,我有:

.controller('formulaPickerCtrl', function ($scope, $stateParams, $http) { 
    $scope.subjectID = $stateParams.subjectID; 
    $scope.subjectName = ''; 
    $scope.withCalc = $stateParams.withCalc; 
    $scope.formulas = []; 

    $http.get('../Data.json') 
     .success(function (data, status, headers, config) { 
     // Alerts correct value 
     alert($scope.withCalc); 
     // Always returns true 
     $scope.subjectSet = ($scope.withCalc) ? data.subjects : data.subjects_no_calc; 
     $scope.subjectName = $scope.subjectSet[$scope.subjectID].name; 
     $scope.formulas = $scope.subjectSet[$scope.subjectID].formulas; 
     }) 
     .error(function (data, status, headers, config) { 
     }) 
     .then(function (result) { 
     }); 
    }) 

但在我聲明範圍的subjectSet值的行,我有一個三元運算符檢查isCalc bool值,它從我請求的json文件返回一組特定的數據。每次加載控制器時,都會發出isCalc值,我想要&是正確的。但是三元表達式總是返回true,即使它提示錯誤。這導致我返回錯誤的一組值。

我從第一控制器2個ui-sref屬性:

ui-sref="tabsController.formulaPicker({subjectID: $index, withCalc: true})"

用於第一部分 &

"tabsController.formulaPicker({subjectID: $index, withCalc: false})"

用於第二部分。

記住它提醒正確的值,但三元表達式總是返回true,無論如何。

預先感謝您。

+1

看起來像'$ scope.withCalc'是* String *類型。但必須是*布爾型*類型。試試這個'$ scope.withCalc = $ stateParams.withCalc ==「true」' –

回答

1

檢查$scope.withCals是否不是字符串對象。您可能需要將其明確轉換爲布爾值。