aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--angular-debug.js11
-rw-r--r--src/services.js7
-rw-r--r--src/widgets.js4
-rw-r--r--test/widgetsSpec.js11
4 files changed, 26 insertions, 7 deletions
diff --git a/angular-debug.js b/angular-debug.js
index c96947a3..897db442 100644
--- a/angular-debug.js
+++ b/angular-debug.js
@@ -3185,13 +3185,13 @@ function valueAccessor(scope, element) {
}
function checkedAccessor(scope, element) {
- var domElement = element[0];
+ var domElement = element[0], elementValue = domElement.value;
return {
get: function(){
return !!domElement.checked;
},
set: function(value){
- domElement.checked = !!value;
+ domElement.checked = toBoolean(value);
}
};
}
@@ -3444,8 +3444,13 @@ angularService("$location", function(browser){
scope.$root.$eval();
});
parse(browser.getUrl());
+ var lastURL;
this.$onEval(PRIORITY_LAST, function(){
- browser.setUrl(toString());
+ var url = toString();
+ if (lastURL != url) {
+ browser.setUrl(url);
+ lastURL = url;
+ }
});
return location;
}, {inject: ['$browser']});
diff --git a/src/services.js b/src/services.js
index e91a8eca..11453338 100644
--- a/src/services.js
+++ b/src/services.js
@@ -44,8 +44,13 @@ angularService("$location", function(browser){
scope.$root.$eval();
});
parse(browser.getUrl());
+ var lastURL;
this.$onEval(PRIORITY_LAST, function(){
- browser.setUrl(toString());
+ var url = toString();
+ if (lastURL != url) {
+ browser.setUrl(url);
+ lastURL = url;
+ }
});
return location;
}, {inject: ['$browser']});
diff --git a/src/widgets.js b/src/widgets.js
index b281ac2e..28798c1b 100644
--- a/src/widgets.js
+++ b/src/widgets.js
@@ -49,13 +49,13 @@ function valueAccessor(scope, element) {
}
function checkedAccessor(scope, element) {
- var domElement = element[0];
+ var domElement = element[0], elementValue = domElement.value;
return {
get: function(){
return !!domElement.checked;
},
set: function(value){
- domElement.checked = !!value;
+ domElement.checked = toBoolean(value);
}
};
}
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js
index c64f03ca..04b8b1ec 100644
--- a/test/widgetsSpec.js
+++ b/test/widgetsSpec.js
@@ -6,9 +6,10 @@ describe("input widget", function(){
scope = null;
element = null;
var compiler = new Compiler(angularTextMarkup, angularAttrMarkup, angularDirective, angularWidget);
- compile = function(html) {
+ compile = function(html, before) {
element = jqLite(html);
scope = compiler.compile(element)(element);
+ (before||noop)();
scope.$init();
};
});
@@ -51,6 +52,14 @@ describe("input widget", function(){
expect(scope.$get('list')).toEqual(['1', '2', '3']);
});
+ it("should process ng-format for booleans", function(){
+ compile('<input type="checkbox" name="name" value="true" ng-format="boolean"/>', function(){
+ scope.name = false;
+ });
+ expect(scope.name).toEqual(false);
+ expect(scope.$element[0].checked).toEqual(false);
+ });
+
it("should process ng-validation", function(){
compile('<input type="text" name="price" value="abc" ng-validate="number"/>');
expect(element.hasClass('ng-validation-error')).toBeTruthy();