quindi ho uno stato che prende due parametri specifici (subjectID & amp; isCalc):
.state('tabsController.formulaPicker', { url: '/my/:subjectID?withCalc', views: { 'tab1': { templateUrl: 'templates/formulaPicker.html', controller: 'formulaPickerCtrl' } } })
nel mio controller ho:
.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) { }); })
ma nella riga in cui dichiaro il valore subjectSet
del campo di applicazione, ho un operatore ternario che controlla il valore isCalc
bool, restituisce un set specifico di dati dal file json che sto richiedendo. ogni volta che carico il controller avvisa il valore isCalc, che voglio & amp; è corretto. ma l'espressione ternaria ritorna sempre vera, anche se allertava il falso. questo mi fa restituire l'insieme sbagliato di valori.
i due ui-sref
proprietà dal primo controller:
ui-sref="tabsController.formulaPicker({subjectID: $index, withCalc: true})"
per la prima sezione & amp;
"tabsController.formulaPicker({subjectID: $index, withCalc: false})"
per la seconda sezione.
ricordate che avvisa il valore corretto, ma l'espressione ternaria ritorna sempre vero, non importa cosa.
grazie in anticipo.
En title : AngularJS boolean value always returns true in scope
verificare se
$scope.withCals
non è un oggetto stringa. potrebbe essere necessario convertirlo esplicitamente in Booleana.$scope.withCalc
sia il tipo String. ma deve essere di tipo booleano. prova questo$scope.withCalc = $stateParams.withCalc=="true"