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.withCalc
是 String 类型。但必须是 Boolean 类型。试试这个$scope.withCalc = $stateParams.withCalc=="true"
【参考方案1】:
检查$scope.withCals
是否不是字符串对象。您可能需要将其显式转换为布尔值。
【讨论】:
以上是关于AngularJS 布尔值在范围内总是返回 true的主要内容,如果未能解决你的问题,请参考以下文章
全局布尔值在 addListenerForSingleEventValue 函数内设置,但在以下 if 语句中无法识别 [重复]