diff options
| author | Misko Hevery | 2010-04-20 18:14:13 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2010-04-20 18:14:13 -0700 | 
| commit | 22d93e0a3bc2a6dc0f64c63c68bc8f8489ea9068 (patch) | |
| tree | 5f65b04ac9fb5a69d87ac40434a14367e6c1d4fc /src | |
| parent | 259c2bba4bf1fc4f0d4cf5bcda4ffef0fb5a615a (diff) | |
| download | angular.js-22d93e0a3bc2a6dc0f64c63c68bc8f8489ea9068.tar.bz2 | |
fixes to enable ie
Diffstat (limited to 'src')
| -rw-r--r-- | src/Angular.js | 3 | ||||
| -rw-r--r-- | src/Browser.js | 9 | ||||
| -rw-r--r-- | src/Compiler.js | 2 | ||||
| -rw-r--r-- | src/directives.js | 15 | ||||
| -rw-r--r-- | src/jqLite.js | 24 | ||||
| -rw-r--r-- | src/scenario/Steps.js | 6 | 
6 files changed, 33 insertions, 26 deletions
diff --git a/src/Angular.js b/src/Angular.js index 005eeb19..613aee67 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -112,7 +112,8 @@ function uppercase(value){ return isString(value) ? value.toUpperCase() : value;  function trim(value) { return isString(value) ? value.replace(/^\s*/, '').replace(/\s*$/, '') : value; }  function nodeName(element) { return (element[0] || element).nodeName; }  function isElement(node) { -  if (node && node[0]) node = node[0]; +  if (node && !node.item && isDefined(node.length) && isDefined(node[0])) +    node = node[0];    return node && node.nodeName;  } diff --git a/src/Browser.js b/src/Browser.js index ff8d9775..e00f73a5 100644 --- a/src/Browser.js +++ b/src/Browser.js @@ -29,7 +29,7 @@ Browser.prototype = {    bind: function() {      var self = this;      self.document.bind("mouseover", function(event){ -      self.hoverListener(jqLite(event.target), true); +      self.hoverListener(jqLite(msie ? event.srcElement : event.target), true);        return true;      });      self.document.bind("mouseleave mouseout click dblclick keypress keyup", function(event){ @@ -43,8 +43,11 @@ Browser.prototype = {    },    addCss: function(url) { -    var head = jqLite(this.document[0].getElementsByTagName('head')[0]), -        link = jqLite('<link rel="stylesheet" type="text/css"></link>'); +    var doc = this.document[0], +        head = jqLite(doc.getElementsByTagName('head')[0]), +        link = jqLite(doc.createElement('link')); +    link.attr('rel', 'stylesheet'); +    link.attr('type', 'text/css');      link.attr('href', url);      head.append(link);    }, diff --git a/src/Compiler.js b/src/Compiler.js index 96df88fb..21302054 100644 --- a/src/Compiler.js +++ b/src/Compiler.js @@ -185,7 +185,7 @@ function eachAttribute(element, fn){    var i, attrs = element[0].attributes || [], chld, attr, name, value, attrValue = {};    for (i = 0; i < attrs.length; i++) {      attr = attrs[i]; -    name = attr.name; +    name = attr.name.replace(':', '-');      value = attr.value;      if (msie && name == 'href') {        value = decodeURIComponent(element[0].getAttribute(name, 2)); diff --git a/src/directives.js b/src/directives.js index a37076d4..2f393b5d 100644 --- a/src/directives.js +++ b/src/directives.js @@ -26,15 +26,20 @@ angularDirective("ng-bind", function(expression){    return function(element) {      var lastValue, lastError;      this.$onEval(function() { -      var error, value = this.$tryEval(expression, function(e){ -        error = toJson(e); -      }); +      var error, +          value = this.$tryEval(expression, function(e){ +            error = toJson(e); +          }), +          isElem = isElement(value); +      if (!isElem && isObject(value)) { +        value = toJson(value); +      }        if (value != lastValue || error != lastError) {          lastValue = value;          lastError = error;          elementError(element, NG_EXCEPTION, error);          if (error) value = error; -        if (isElement(value)) { +        if (isElem) {            element.html('');            element.append(value);          } else { @@ -177,7 +182,7 @@ angularWidget("@ng-repeat", function(expression, element){  angularDirective("ng-click", function(expression, element){    return function(element){      var self = this; -    element.click(function(){ +    element.bind('click', function(){        self.$tryEval(expression, element);        self.$root.$eval();        return false; diff --git a/src/jqLite.js b/src/jqLite.js index 2d41a25c..1bf6e083 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -37,14 +37,14 @@ function jqClearData(element) {  }  function JQLite(element) { -  if (element.length && element.item) { +  if (isElement(element)) { +    this[0] = element; +    this.length = 1; +  } else if (isDefined(element.length) && element.item) {      for(var i=0; i < element.length; i++) {        this[i] = element[i];      }      this.length = element.length; -  } else { -    this[0] = element; -    this.length = 1;    }  } @@ -92,8 +92,13 @@ JQLite.prototype = {              bubbleEvent = bubbleEvent || fn.call(self, event);            });            if (!bubbleEvent) { -            event.preventDefault(); -            event.stopPropagation(); +            if (msie) { +              event.returnValue = false; +              event.cancelBubble = true; +            } else { +              event.preventDefault(); +              event.stopPropagation(); +            }            }          };          eventHandler.fns = []; @@ -109,13 +114,6 @@ JQLite.prototype = {      this[0].dispatchEvent(evnt);    }, -  click: function(fn) { -    if (fn) -      this.bind('click', fn); -    else -      this.trigger('click'); -  }, -    replaceWith: function(replaceNode) {      this[0].parentNode.replaceChild(jqLite(replaceNode)[0], this[0]);    }, diff --git a/src/scenario/Steps.js b/src/scenario/Steps.js index f8ac173f..ffe75933 100644 --- a/src/scenario/Steps.js +++ b/src/scenario/Steps.js @@ -29,14 +29,14 @@ angular.scenario.WHEN = {      // emulate the browser behavior which causes it      // to be overridden at the end.      var checked = input.checked = !input.checked; -    element.click(); +    element.trigger('click');      input.checked = checked;    },    select:function(){      var element = this.element(this.at);      var path = "option[value=" + this.option + "]";      var option = this.assert(element.find(path)); -    option[0].selected = !option[0].selected;  +    option[0].selected = !option[0].selected;      element.change();    }  }; @@ -48,7 +48,7 @@ angular.scenario.THEN = {        if (_.isArray(this.should_be))          should_be = JSON.stringify(should_be);        if (element.text() != should_be) -        throw "Expected " + should_be +  +        throw "Expected " + should_be +                " but was " + element.text() + ".";      }    },  | 
