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,无论如何。
预先感谢您。
看起来像'$ scope.withCalc'是* String *类型。但必须是*布尔型*类型。试试这个'$ scope.withCalc = $ stateParams.withCalc ==“true”' –