diff options
| author | Misko Hevery | 2010-03-31 13:57:25 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2010-03-31 13:57:25 -0700 | 
| commit | 35a91085004e31f786df1e0011bc26ed0142ab4d (patch) | |
| tree | 030289973e8ae5a88e86fc77d878dde40b72ddc5 /src | |
| parent | b5b8f63e1ebc75d09c6faf8dbad6497880deed47 (diff) | |
| download | angular.js-35a91085004e31f786df1e0011bc26ed0142ab4d.tar.bz2 | |
all tests green, some dissabled
Diffstat (limited to 'src')
| -rw-r--r-- | src/Angular.js | 2 | ||||
| -rw-r--r-- | src/Formatters.js | 2 | ||||
| -rw-r--r-- | src/JSON.js | 1 | ||||
| -rw-r--r-- | src/Scope.js | 2 | ||||
| -rw-r--r-- | src/Widgets.js | 3 | ||||
| -rw-r--r-- | src/directives.js | 29 | ||||
| -rw-r--r-- | src/jqLite.js | 2 | 
7 files changed, 25 insertions, 16 deletions
diff --git a/src/Angular.js b/src/Angular.js index 27f463ac..db177082 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -6,9 +6,11 @@ if (!window['console']) window['console']={'log':noop, 'error':noop};  var consoleNode,      NOOP              = 'noop',      NG_ERROR          = 'ng-error', +    NG_EXCEPTION      = 'ng-exception',      NG_VALIDATION_ERROR = 'ng-validation-error',      jQuery            = window['jQuery'] || window['$'], // weirdness to make IE happy      _                 = window['_'], +    msie              = !!/(msie) ([\w.]+)/.exec(lowercase(navigator.userAgent)),      jqLite            = jQuery || jqLiteWrap,      slice             = Array.prototype.slice,      angular           = window['angular']    || (window['angular']    = {}), diff --git a/src/Formatters.js b/src/Formatters.js index 402e8a2b..c1ff82c6 100644 --- a/src/Formatters.js +++ b/src/Formatters.js @@ -1,5 +1,5 @@  function formater(format, parse) {return {'format':format, 'parse':parse || format};} -function toString(obj) {return ""+obj;}; +function toString(obj) {return isDefined(obj) ? "" + obj : obj;};  extend(angularFormatter, {    'noop':formater(identity, identity),    'boolean':formater(toString, toBoolean), diff --git a/src/JSON.js b/src/JSON.js index baf3a2fa..69e1b4c0 100644 --- a/src/JSON.js +++ b/src/JSON.js @@ -11,6 +11,7 @@ function toPrettyJson(obj)  {  };  function fromJson(json) { +  if (!json) return json;    try {      var parser = new Parser(json, true);      var expression =  parser.primary(); diff --git a/src/Scope.js b/src/Scope.js index 42e7d5e5..4144d456 100644 --- a/src/Scope.js +++ b/src/Scope.js @@ -81,7 +81,7 @@ function errorHandlerFor(element, error) {    while (!isRenderableElement(element)) {      element = element.parent() || jqLite(document.body);    } -  elementError(element, 'ng-exception', isDefined(error) ? toJson(error) : error); +  elementError(element, NG_EXCEPTION, isDefined(error) ? toJson(error) : error);  }  function createScope(parent, Class) { diff --git a/src/Widgets.js b/src/Widgets.js index bc61f570..f172eae2 100644 --- a/src/Widgets.js +++ b/src/Widgets.js @@ -108,7 +108,7 @@ function inputWidget(events, modelAccessor, viewAccessor, initValue) {      var scope = this,          model = modelAccessor(scope, element),          view = viewAccessor(scope, element), -        action = element.attr('ng-action') || '', +        action = element.attr('ng-change') || '',          value = view.get() || copy(initValue);      if (isUndefined(model.get()) && isDefined(value)) model.set(value);      this.$eval(element.attr('ng-init')||''); @@ -120,6 +120,7 @@ function inputWidget(events, modelAccessor, viewAccessor, initValue) {        // therefore we want to prevent default action        return isDefined(initValue);      }); +    view.set(model.get());      scope.$watch(model.get, view.set);    };  } diff --git a/src/directives.js b/src/directives.js index 291bea11..de68360e 100644 --- a/src/directives.js +++ b/src/directives.js @@ -15,7 +15,7 @@ angularDirective("ng-bind", function(expression){    return function(element) {      var lastValue;      this.$onEval(function() { -      var value = templateFn.call(this); +      var value = templateFn.call(this, element);        if (value != lastValue) {          element.text(value);          lastValue = value; @@ -31,16 +31,20 @@ function compileBindTemplate(template){      var bindings = [];      foreach(parseBindings(template), function(text){        var exp = binding(text); -      bindings.push(exp ? function(){ -        return this.$eval(exp); -      } : function(){ +      bindings.push(exp ? function(element){ +        var error, value = this.$tryEval(exp, function(e){ +          error = toJson(e); +        }); +        elementError(element, NG_EXCEPTION, error); +        return error ? error : value; +      } : function() {          return text;        });      }); -    bindTemplateCache[template] = fn = function(){ +    bindTemplateCache[template] = fn = function(element){        var parts = [], self = this;        foreach(bindings, function(fn){ -        var value = fn.call(self); +        var value = fn.call(self, element);          if (isObject(value)) value = toJson(value, true);          parts.push(value);        }); @@ -54,7 +58,7 @@ angularDirective("ng-bind-template", function(expression){    return function(element) {      var lastValue;      this.$onEval(function() { -      var value = templateFn.call(this); +      var value = templateFn.call(this, element);        if (value != lastValue) {          element.text(value);          lastValue = value; @@ -67,7 +71,7 @@ angularDirective("ng-bind-attr", function(expression){    return function(element){      this.$onEval(function(){        foreach(this.$eval(expression), function(bindExp, key) { -        var value = compileBindTemplate(bindExp).call(this); +        var value = compileBindTemplate(bindExp).call(this, element);          if (key == 'disabled' && !toBoolean(value)) {            element.removeAttr('disabled');          } else { @@ -135,12 +139,13 @@ angularWidget("@ng-repeat", function(expression, element){    };  }); -angularDirective("ng-action", function(expression, element){ +angularDirective("ng-click", function(expression, element){    return function(element){      var self = this;      element.click(function(){        self.$tryEval(expression, element);        self.$eval(); +      return false;      });    };  }); @@ -167,7 +172,7 @@ function ngClass(selector) {          var value = this.$eval(expression);          if (selector(this.$index)) {            if (isArray(value)) value = value.join(' '); -          element[0].className = (existing + value).replace(/\s\s+/g, ' '); +          element[0].className = trim(existing + value);          }        }, element);      }; @@ -175,8 +180,8 @@ function ngClass(selector) {  }  angularDirective("ng-class", ngClass(function(){return true;})); -angularDirective("ng-class-odd", ngClass(function(i){return i % 2 == 1;})); -angularDirective("ng-class-even", ngClass(function(i){return i % 2 == 0;})); +angularDirective("ng-class-odd", ngClass(function(i){return i % 2 == 0;})); +angularDirective("ng-class-even", ngClass(function(i){return i % 2 == 1;}));  angularDirective("ng-show", function(expression, element){    return function(element){ diff --git a/src/jqLite.js b/src/jqLite.js index 449854d5..3baafd51 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -136,7 +136,7 @@ JQLite.prototype = {    addClass: function( selector ) {      if (!this.hasClass(selector)) { -      this[0].className += ' ' + selector; +      this[0].className = trim(this[0].className + ' ' + selector);      }    },  | 
