0
私のdatepicker正規表現は、ヌルアレイで一致を試行しています。どうすれば修正できますか?配列がnullの場合、どのクラスが等しいかどうか不明です。私は単純なif(matches [1]){etc}を考えていますが、matchがnullの場合はどうすればよいか分かりません。 Clazzはコード内で別の場所で2回使用されます。 clazzをゼロまたはゼロに設定するだけですか?Regex TypeError:ヌルのプロパティ '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));
}
です