AngularJS 布尔值在范围内总是返回 true

Posted

技术标签:

【中文标题】AngularJS 布尔值在范围内总是返回 true【英文标题】:AngularJS boolean value always returns true in scope 【发布时间】:2016-09-27 03:41:41 【问题描述】:

所以我有一个带有两个特定参数(subjectID 和 isCalc)的状态:

  .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,即使它警告为 false。这会导致我返回错误的值集。

我来自第一个控制器的两个ui-sref 属性:

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

第一部分 &

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

第二部分。

请记住,它会提醒正确的值,但无论如何三元表达式总是返回 true。

提前谢谢你。

【问题讨论】:

看起来 $scope.withCalcString 类型。但必须是 Boolean 类型。试试这个$scope.withCalc = $stateParams.withCalc=="true" 【参考方案1】:

检查$scope.withCals 是否不是字符串对象。您可能需要将其显式转换为布尔值。

【讨论】:

以上是关于AngularJS 布尔值在范围内总是返回 true的主要内容,如果未能解决你的问题,请参考以下文章

具有多个值的张量的布尔值在 Pytorch 中不明确

当表中有指定范围内的数据时返回布尔值

全局布尔值在 addListenerForSingleEventValue 函数内设置,但在以下 if 语句中无法识别 [重复]

布尔值在活动中第一次返回 false [重复]

Laravel 布尔值在查询中返回“1”/“0”而不是 true/false

Oracle Between(范围)子句