diff options
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() + "."; } }, |
