【问题标题】:Angularjs - $watch issueAngularjs - $watch 问题
【发布时间】:2014-12-30 18:28:04
【问题描述】:

我收到了这个错误,我不知道我做错了什么 错误:未定义不是对象(正在评估'$scope.userFormData.cpr')

谁能帮帮我,因为我不确定我做错了什么,我一加载页面就会出现错误

 $scope.$watch(function () {
                return $scope.userFormData.cpr;
            },
            function (cprValue) {

                console.log(cprValue);

                //For at scriptet ikke skal faile første gang det bliver loadet
                //tjekker vi om medlemmet har skrevet noget i cpr feltet
                if (cprValue === undefined) {
                    return false;
                }

                //Hent brugerens input og split dem op
                var cpr = cprValue.toString();

                //Hvis cpr undeholder en streg -

                var dd = +cpr.substr(0, 2); // 01
                var mm = +cpr.substr(2, 2); // 02
                var yy = +cpr.substr(4, 2); // 90

                //Calculate if 90 is > 50
                if (yy > 50) {
                    var year = yy + 1900;
                } else {
                    var year = yy + 2000;
                }

                //Sæt fødselsdags datoen sammen så momentJS forstår det
                var final = mm + "/" + dd + "/" + year;

                //Beregn datoen og split resultatet op så vi kun får fødselsdags tallet
                var alder = moment(final, "MM/DD/YYYY").fromNow().split(" ")[0];

                //Vi clear ageToYoung feltet hvis det har været udfyldt
                //og disabler andenBetaler vinduet igen
                $scope.ageToYoung = "";
                $scope.hideSecondpayer = true;


                //Hvis personen er mellem 15 og 18 år så vis andenBetaler boksen
                if ((alder >= 15) && (alder <= 18)) {
                    $scope.hideSecondpayer  = false;
                    $scope.hideRegnrBarn    = true;
                    $scope.hideKontonrBarn  = true;

                } else if (alder <= 14) {

                    //Personen er ikke gammel nok, og vi skriver det derfor til kunden
                    $scope.ageToYoung = "Du skal minimum være 15 år gammel";
                }

            });

【问题讨论】:

    标签: angularjs watch


    【解决方案1】:

    不要在匿名函数中返回它,而是直接在作用域对象上应用$watch-

    $scope.$watch('userFormData.cpr',
                function (cprValue) {
    
                    console.log(cprValue);
    
                    //For at scriptet ikke skal faile første gang det bliver loadet
                    //tjekker vi om medlemmet har skrevet noget i cpr feltet
                    if (cprValue === undefined) {
                        return false;
                    }
    
                    //Hent brugerens input og split dem op
                    var cpr = cprValue.toString();
    
                    //Hvis cpr undeholder en streg -
    
                    var dd = +cpr.substr(0, 2); // 01
                    var mm = +cpr.substr(2, 2); // 02
                    var yy = +cpr.substr(4, 2); // 90
    
                    //Calculate if 90 is > 50
                    if (yy > 50) {
                        var year = yy + 1900;
                    } else {
                        var year = yy + 2000;
                    }
    
                    //Sæt fødselsdags datoen sammen så momentJS forstår det
                    var final = mm + "/" + dd + "/" + year;
    
                    //Beregn datoen og split resultatet op så vi kun får fødselsdags tallet
                    var alder = moment(final, "MM/DD/YYYY").fromNow().split(" ")[0];
    
                    //Vi clear ageToYoung feltet hvis det har været udfyldt
                    //og disabler andenBetaler vinduet igen
                    $scope.ageToYoung = "";
                    $scope.hideSecondpayer = true;
    
    
                    //Hvis personen er mellem 15 og 18 år så vis andenBetaler boksen
                    if ((alder >= 15) && (alder <= 18)) {
                        $scope.hideSecondpayer  = false;
                        $scope.hideRegnrBarn    = true;
                        $scope.hideKontonrBarn  = true;
    
                    } else if (alder <= 14) {
    
                        //Personen er ikke gammel nok, og vi skriver det derfor til kunden
                        $scope.ageToYoung = "Du skal minimum være 15 år gammel";
                    }
    
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多