improve error handling with elements

This commit is contained in:
Misko Hevery 2010-05-30 16:34:59 -07:00
parent 0d87208553
commit c7d64f6d12
5 changed files with 14 additions and 16 deletions

View file

@ -8,7 +8,7 @@
PerfCntl.prototype = { PerfCntl.prototype = {
createItems: function(){ createItems: function(){
var items = []; var items = [];
for ( var i = 0; i < 100; i++) { for ( var i = 0; i < 1000; i++) {
var item = { var item = {
name: "" + Math.random(), name: "" + Math.random(),
parts: [Math.random(), Math.random()] parts: [Math.random(), Math.random()]

View file

@ -291,12 +291,15 @@ function elementError(element, type, error) {
while (!isRenderableElement(element)) { while (!isRenderableElement(element)) {
element = element.parent() || jqLite(document.body); element = element.parent() || jqLite(document.body);
} }
if (error) { if (element[0]['$NG_ERROR'] !== error) {
element.addClass(type); element[0]['$NG_ERROR'] = error;
element.attr(type, error); if (error) {
} else { element.addClass(type);
element.removeClass(type); element.attr(type, error);
element.removeAttr(type); } else {
element.removeClass(type);
element.removeAttr(type);
}
} }
} }

View file

@ -3,7 +3,7 @@
////////////////////////////// //////////////////////////////
function Browser(location, document) { function Browser(location, document) {
this.delay = 25; this.delay = 50;
this.expectedUrl = location.href; this.expectedUrl = location.href;
this.urlListeners = []; this.urlListeners = [];
this.hoverListener = noop; this.hoverListener = noop;

View file

@ -53,14 +53,8 @@ function expressionCompile(exp){
parser.assertAllConsumed(); parser.assertAllConsumed();
compileCache[exp] = expFn; compileCache[exp] = expFn;
} }
return parserNewScopeAdapter(expFn);
}
// return expFn
// TODO(remove this hack)
function parserNewScopeAdapter(fn) {
return function(){ return function(){
return fn(this); return expFn(this);
}; };
} }

View file

@ -296,8 +296,9 @@ var angularFunction = {
if (isFunction(expression)){ if (isFunction(expression)){
return expression; return expression;
} else if (expression){ } else if (expression){
var fn = expressionCompile(expression);
return function($) { return function($) {
return expressionCompile(expression).apply($); return fn.apply($);
}; };
} else { } else {
return identity; return identity;