aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Angular.js3
-rw-r--r--src/Browser.js9
-rw-r--r--src/Compiler.js2
-rw-r--r--src/directives.js15
-rw-r--r--src/jqLite.js24
-rw-r--r--src/scenario/Steps.js6
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() + ".";
}
},