如何制作ToUpperCase在这种情况下工作

时间:2017-04-26 11:27:17

标签: angularjs

我有一个文本输入字段,我不希望用户允许已经存在的单词(Case inSensitiviness)下标有JSON

我尝试过使用

var value = val.toUpperCase();

控制台

下的异常
VM226 angular.js:6173 TypeError: Cannot read property 'toUpperCase' of undefined
    at Child.$scope.checkQuestions (VM227:78)
    at Object.get (VM226 angular.js:6801)
    at Object.$digest (VM226 angular.js:8563)
    at Object.$apply (VM226 angular.js:8771)
    at VM226 angular.js:986
    at Object.invoke (VM226 angular.js:2873)
    at resumeBootstrapInternal (VM226 angular.js:984)
    at bootstrap (VM226 angular.js:998)
    at angularInit (VM226 angular.js:959)
    at VM226 angular.js:16310

我的代码:

  var myapp = angular.module('myapp', []);
    myapp.controller('FirstCtrl', function($scope)
    {
        $scope.$watch('vm.status.name', function(val)
        {
                var myarray = [];
                for (var i = 0; i < $scope.tickets.length; i++)
                {
                        var name = $scope.tickets[i].name.toUpperCase();

                        myarray.push(name);
                }
                $scope.checkQuestions = function()
                {
                    //var value = val.toUpperCase();
                        if (myarray.indexOf(val) !== -1)
                        {
                                return true;
                        }
                        else
                        {
                                return false;
                        }
                };
        });
    });

这是我的小提琴

尝试在文字输入下输入打开和关闭

http://jsfiddle.net/9fR23/424/

4 个答案:

答案 0 :(得分:1)

您的变量val看起来未定义。

答案 1 :(得分:1)

我认为,没有必要添加watch来输入文本值。 您可以在外面初始化myarray

您可以为checkQuestions功能创建单独的方法。

像:

$scope.myarray = //add code to initialize this

$scope.checkQuestions = function()
{
     if (myarray.indexOf(vm.status.name.toUpperCase()) !== -1)
      {
            //do something.
      }
      else
      {
           //do other thing
       }
};

答案 2 :(得分:0)

尝试在var v = val;回调函数中添加$scope.$watch,然后使用vvar value = v.toUpperCase();

答案 3 :(得分:0)

这个小提琴似乎对我有用(当我输入“打开”时,保存按钮被禁用。 http://jsfiddle.net/9fR23/426/

主要区别在于将checkQuestions函数替换为$watch事件函数中设置的范围变量。我觉得这可能是你想要做的事情。您现有的代码在$watch函数中定义了函数,并尝试使用它中的变量。