2016-09-27 75 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是否不是字符串对象。您可能需要将其明确转换为布尔值。