簡體   English   中英

如何在Angular.js中區分null和'0'?

[英]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中, null0和空字符串在if語句中用作語句時被處理為false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM