diff options
| -rw-r--r-- | jsTestDriver.conf | 2 | ||||
| -rw-r--r-- | scenario/widgets.html | 4 | ||||
| -rw-r--r-- | src/Angular.js | 6 | ||||
| -rw-r--r-- | src/directives.js | 9 | ||||
| -rw-r--r-- | src/filters.js | 6 | ||||
| -rw-r--r-- | src/jqLite.js | 4 | ||||
| -rw-r--r-- | src/widgets.js | 2 | ||||
| -rw-r--r-- | test/BinderTest.js | 4 | ||||
| -rw-r--r-- | test/FiltersTest.js | 8 | ||||
| -rw-r--r-- | test/testabilityPatch.js | 9 | ||||
| -rw-r--r-- | test/widgetsSpec.js | 12 |
11 files changed, 36 insertions, 30 deletions
diff --git a/jsTestDriver.conf b/jsTestDriver.conf index 196d282f..e2820ddb 100644 --- a/jsTestDriver.conf +++ b/jsTestDriver.conf @@ -3,7 +3,7 @@ server: http://localhost:9876 load: - lib/jasmine/jasmine-0.10.3.js - lib/jasmine-jstd-adapter/JasmineAdapter.js - - lib/jquery/jquery-1.4.2.js +# - lib/jquery/jquery-1.4.2.js - src/Angular.js - src/*.js - src/scenario/_namespace.js diff --git a/scenario/widgets.html b/scenario/widgets.html index 43b1ddbb..1341f7cb 100644 --- a/scenario/widgets.html +++ b/scenario/widgets.html @@ -1,9 +1,9 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> - <link rel="stylesheet" type="text/css" href="style.css"/><!-- + <link rel="stylesheet" type="text/css" href="style.css"/> <script type="text/javascript" src="../lib/jquery/jquery-1.4.2.js"></script> - --><script type="text/javascript" src="../src/angular-bootstrap.js#autobind"></script> + <script type="text/javascript" src="../src/angular-bootstrap.js#autobind"></script> </head> <body ng:init="$window.$scope = this"> <table> diff --git a/src/Angular.js b/src/Angular.js index a4421f0e..0c1ab838 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -112,7 +112,11 @@ function lowercase(value){ return isString(value) ? value.toLowerCase() : value; function uppercase(value){ return isString(value) ? value.toUpperCase() : value; } function trim(value) { return isString(value) ? value.replace(/^\s*/, '').replace(/\s*$/, '') : value; } function isElement(node) { - return node && (node.nodeName || node instanceof JQLite || node instanceof jQuery); + return node && (node.nodeName || node instanceof JQLite || (jQuery && node instanceof jQuery)); +} + +function HTML(html) { + this.html = html; } if (msie) { diff --git a/src/directives.js b/src/directives.js index bdcdcc1d..aa75aa5b 100644 --- a/src/directives.js +++ b/src/directives.js @@ -30,8 +30,8 @@ angularDirective("ng-bind", function(expression){ value = this.$tryEval(expression, function(e){ error = toJson(e); }), - isElem = isElement(value); - if (!isElem && isObject(value)) { + isHtml = value instanceof HTML; + if (!isHtml && isObject(value)) { value = toJson(value); } if (value != lastValue || error != lastError) { @@ -39,9 +39,8 @@ angularDirective("ng-bind", function(expression){ lastError = error; elementError(element, NG_EXCEPTION, error); if (error) value = error; - if (isElem) { - element.html(''); - element.append(value); + if (isHtml) { + element.html(value.html); } else { element.text(value); } diff --git a/src/filters.js b/src/filters.js index 74013db1..a911b935 100644 --- a/src/filters.js +++ b/src/filters.js @@ -269,9 +269,7 @@ foreach({ }, 'html': function(html){ - var div = jqLite('div'); - div.html(html); - return div.children(); + return new HTML(html); }, 'linky': function(text){ @@ -293,7 +291,7 @@ foreach({ raw = raw.substring(i + url.length); } html.push(escapeHtml(raw)); - return jqLite(html.join('')); + return new HTML(html.join('')); } }, function(v,k){angularFilter[k] = v;}); diff --git a/src/jqLite.js b/src/jqLite.js index ec1c52d2..18589630 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -238,10 +238,6 @@ if (msie) { }, trigger: function(type) { - - if (nodeName(this) == 'INPUT' && (lowercase(this.attr('type')) == 'radio' || lowercase(this.attr('type')) == 'checkbox')) { - this[0].checked = ! this[0].checked; - } this[0].fireEvent('on' + type); } }); diff --git a/src/widgets.js b/src/widgets.js index 239f12f8..209b24b7 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -32,7 +32,7 @@ function valueAccessor(scope, element) { value = element.val(); force = true; } - if (element[0].disabled || isString(element.attr('readonly'))) { + if (element[0].disabled || element[0].readOnly) { elementError(element, NG_VALIDATION_ERROR, null); invalidWidgets.markValid(element); return value; diff --git a/test/BinderTest.js b/test/BinderTest.js index 31b2698d..76561dc3 100644 --- a/test/BinderTest.js +++ b/test/BinderTest.js @@ -588,13 +588,13 @@ BinderTest.prototype.testItShouldSelectTheCorrectRadioBox = function() { var female = jqLite(c.node[0].childNodes[0]); var male = jqLite(c.node[0].childNodes[1]); - female.trigger('click'); + click(female); assertEquals("female", c.scope.sex); assertEquals(true, female[0].checked); assertEquals(false, male[0].checked); assertEquals("female", female.val()); - male.trigger('click'); + click(male); assertEquals("male", c.scope.sex); assertEquals(false, female[0].checked); assertEquals(true, male[0].checked); diff --git a/test/FiltersTest.js b/test/FiltersTest.js index a71d30e2..5642f635 100644 --- a/test/FiltersTest.js +++ b/test/FiltersTest.js @@ -133,9 +133,9 @@ FiltersTest.prototype.testGoogleChartApiEncode = function() { }; FiltersTest.prototype.testHtml = function() { - var div = jqLite('<div></div>'); - div.append(angular.filter.html("a<b>c</b>d")); - assertEquals("a<b>c</b>d", lowercase(div.html())); + var html = angular.filter.html("a<b>c</b>d"); + expect(html instanceof HTML).toBeTruthy(); + expect(html.html).toEqual("a<b>c</b>d"); }; FiltersTest.prototype.testLinky = function() { @@ -145,7 +145,7 @@ FiltersTest.prototype.testLinky = function() { '(<a href="http://a/">http://a/</a>) ' + '<<a href="http://a/">http://a/</a>> ' + '<a href="http://1.2/v:~-123">http://1.2/v:~-123</a>. c', - sortedHtml(linky("http://ab/ (http://a/) <http://a/> http://1.2/v:~-123. c"))); + linky("http://ab/ (http://a/) <http://a/> http://1.2/v:~-123. c").html); assertEquals(undefined, linky(undefined)); }; diff --git a/test/testabilityPatch.js b/test/testabilityPatch.js index e5eef63e..b05770c7 100644 --- a/test/testabilityPatch.js +++ b/test/testabilityPatch.js @@ -148,3 +148,12 @@ function assertThrows(error, fn){ log = noop; error = noop; + +function click(element) { + element = jqLite(element); + if ( (msie || jqLite == window.jQuery) && + nodeName(element) == 'INPUT' && (lowercase(element.attr('type')) == 'radio' || lowercase(element.attr('type')) == 'checkbox')) { + element[0].checked = ! element[0].checked; + } + element.trigger('click'); +} diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js index c6c57557..3aa5e250 100644 --- a/test/widgetsSpec.js +++ b/test/widgetsSpec.js @@ -137,23 +137,23 @@ describe("widget", function(){ it('should call ng-change on button click', function(){ compile('<input type="button" value="Click Me" ng-change="clicked = true"/>'); - element.trigger('click'); + click(element); expect(scope.$get('clicked')).toEqual(true); }); it('should support button alias', function(){ compile('<button ng-change="clicked = true">Click Me</button>'); - element.trigger('click'); + click(element); expect(scope.$get('clicked')).toEqual(true); }); it('should support type="checkbox"', function(){ compile('<input type="checkBox" name="checkbox" checked ng-change="action = true"/>'); expect(scope.checkbox).toEqual(true); - element.trigger('click'); + click(element); expect(scope.checkbox).toEqual(false); expect(scope.action).toEqual(true); - element.trigger('click'); + click(element); expect(scope.checkbox).toEqual(true); }); @@ -177,7 +177,7 @@ describe("widget", function(){ expect(b.checked).toEqual(true); expect(scope.clicked).not.toBeDefined(); - jqLite(a).trigger('click'); + click(a); expect(scope.chose).toEqual('A'); expect(scope.clicked).toEqual(1); }); @@ -219,7 +219,7 @@ describe("widget", function(){ it('should report error on ng-change exception', function(){ compile('<button ng-change="a-2=x">click</button>'); - element.trigger('click'); + click(element); expect(element.hasClass('ng-exception')).toBeTruthy(); }); }); |
