Есть ли способ определить, является ли значение, сохраненное с использованием ng-model
, просто нулевым или если набрано 0, в Angular.JS?Как отличить нуль от «0» в Angular.js?
В принципе, я пытаюсь использовать решительность в моем пути, чтобы отправить пользователю обратно #/page-1
, если они пытаются перейти к #/page-2
и vm.data.foo
не была завершена. Как и в случае обновления страницы браузера, которая сбрасывает временные данные.
Проблема, с которой я столкнулся, заключается в том, что если пользователь вводит значение «0», то он обрабатывается так же, как и значение null Angular.JS. Есть ли способ провести различие между двумя, используя заявление if
?
В моей #/page-1
зрения:
<input type="number" ng-model="vm.Data.foo" />
Мой маршрут для #/page-2
:
$routeProvider.when("/page-2", {
controller: "page2Controller",
controllerAs: "vm",
templateUrl: "/content/templates/page2View.html",
resolve: {
validate: function ($location, Data) {
// if Data.foo was not entered, send back to page-1
if (!Data.foo && Data.foo != 0) {
$location.path('/page-1');
}
}
}
});
Это была одна из моих попыток, но он не работает. В обновлении браузера он не перенаправляется обратно на страницу-1, когда Data.foo
имеет значение null, поскольку он отображается так же, как 0.
Любые идеи для работы вокруг?
Решение (благодаря ответу Чета):
$routeProvider.when("/page-2", {
controller: "page2Controller",
controllerAs: "vm",
templateUrl: "/content/templates/page2View.html",
resolve: {
validate: function ($location, Data) {
// if Data.foo was not entered, send back to page-1
if (Data.foo === '') {
$location.path('/page-1');
}
}
}
});
Спасибо! Тройной знак равенства работал. Мне просто пришлось изменить его на: 'if (Data.foo === '') {}'. Мне придется искать, как '===' отличается от просто '=='. – Wellspring
=== не делает принуждение типа. Например, '0 == '0'' истинно, но' 0 ===' 0'' не является. – Chet
'==' сначала преобразует операнды в один и тот же тип, '===' не преобразуется и будет истинным только в том случае, если оба имеют один и тот же тип. '0 == false; // true, но '0 === false; // false' – unpollo