[英]How to distinguish between null and '0' in Angular.js?
在Angular.JS中,有沒有辦法確定使用ng-model
保存的值是否為null或者是否鍵入了0?
基本上,我試圖在我的路由中使用resolve將用戶發送回#/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
為null時,它不會重定向回到第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');
}
}
}
});
它不是將null視為0,而是將0和null視為false。 !(null) == true
原樣!(0) == true
。 你想要更像的東西:
if (Data.foo === null) {
使用簡單:
if(Data.foo == null){}
在javascript中, null
, 0
和空字符串在if
語句中用作語句時被處理為false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.