在Angular.JS中,有没有办法确定使用ng-model
保存的值是否为null或者是否输入了0?
基本上,我尝试在我的路线中使用“解决方案”将用户发送回#/page-1
,如果他们尝试转到#/page-2
并且vm.data.foo
未完成。就像浏览器页面刷新一样,它会重置临时数据。
我遇到的问题是,如果用户键入“0”,则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');
}
}
}
});
这是我的一次尝试,但它不起作用。在浏览器刷新时,当Data.foo
为空时,它不会重定向回到第1页,因为它看起来与0相同。
有关解决方法的任何想法吗?
解决方案(感谢Chet的回答):
$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');
}
}
}
});
答案 0 :(得分:2)
并不是将null视为0,而是将0和null都视为false。 !(null) == true
和!(0) == true
一样if (Data.foo === null) {
。你想要更像的东西:
{{1}}
答案 1 :(得分:1)
简单地使用:
if(Data.foo == null){}
在javascript中,null
,0
和空字符串在false
语句中用作语句时将被处理为if