2016-08-31 65 views
0

我的datepicker正则表达式尝试匹配null aray。我如何解决它?不知道如果数组为null,clazz应该等于什么。我想一个简单的if(匹配[1]){etc},但我不知道如果匹配为空,该怎么做。 Clazz在代码中使用了两次。我只是将clazz设置为null或零?正则表达式TypeError:无法读取null的属性'1'

var matches = exp.match(IS_REGEXP); 
    var clazz = scope.$eval(matches[1]); 

编辑:在这里,他们使用clazz中

if (data.lastActivated !== newActivated) { 
     if (data.lastActivated) { 
     $animate.removeClass(data.lastActivated.element, clazz); 
     } 
     if (newActivated) { 
     $animate.addClass(newActivated.element, clazz); 
     } 
     data.lastActivated = newActivated; 
    } 

这里的IS_REGEXP

     11111111   22222222 
    var IS_REGEXP = /^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/; 

双编辑:

这里的整体功能

function addForExp(exp, scope) { 
    var matches = exp.match(IS_REGEXP); 

     var clazz = scope.$eval(matches[1]); 
    var compareWithExp = matches[2]; 
    var data = expToData[exp]; 
    if (!data) { 
     var watchFn = function(compareWithVal) { 
     var newActivated = null; 
     instances.some(function(instance) { 
      var thisVal = instance.scope.$eval(onExp); 
      if (thisVal === compareWithVal) { 
      newActivated = instance; 
      return true; 
      } 
     }); 
     if (data.lastActivated !== newActivated) { 
      if (data.lastActivated) { 
      $animate.removeClass(data.lastActivated.element, clazz); 
      } 
      if (newActivated) { 
      $animate.addClass(newActivated.element, clazz); 
      } 
      data.lastActivated = newActivated; 
     } 
     }; 
     expToData[exp] = data = { 
     lastActivated: null, 
     scope: scope, 
     watchFn: watchFn, 
     compareWithExp: compareWithExp, 
     watcher: scope.$watch(compareWithExp, watchFn) 
     }; 
    } 
    data.watchFn(scope.$eval(compareWithExp)); 
    } 

回答

1

clazz设置为空或空字符串应该做,如果clazz是你所关心的。

var clazz = matches ? scope.$eval(matches[1]) : ''; 

但随着compareWithExp,当没有比赛可能是从整个逻辑更好地退出:

if (! matches) return; 
相关问题