aboutsummaryrefslogtreecommitdiffstats
path: root/src/services.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/services.js')
-rw-r--r--src/services.js21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/services.js b/src/services.js
index 7742b174..de65e30f 100644
--- a/src/services.js
+++ b/src/services.js
@@ -1118,6 +1118,8 @@ angularServiceInject('$cookies', function($browser) {
})();
//at the end of each eval, push cookies
+ //TODO: this should happen before the "delayed" watches fire, because if some cookies are not
+ // strings or browser refuses to store some cookies, we update the model in the push fn.
this.$onEval(PRIORITY_LAST, push);
return cookies;
@@ -1128,6 +1130,7 @@ angularServiceInject('$cookies', function($browser) {
*/
function push(){
var name,
+ value,
browserCookies,
updated;
@@ -1140,15 +1143,22 @@ angularServiceInject('$cookies', function($browser) {
//update all cookies updated in $cookies
for(name in cookies) {
- if (cookies[name] !== lastCookies[name]) {
- $browser.cookies(name, cookies[name]);
+ value = cookies[name];
+ if (!isString(value)) {
+ if (isDefined(lastCookies[name])) {
+ cookies[name] = lastCookies[name];
+ } else {
+ delete cookies[name];
+ }
+ } else if (value !== lastCookies[name]) {
+ $browser.cookies(name, value);
updated = true;
}
}
//verify what was actually stored
if (updated){
- updated = !updated;
+ updated = false;
browserCookies = $browser.cookies();
for (name in cookies) {
@@ -1161,11 +1171,6 @@ angularServiceInject('$cookies', function($browser) {
}
updated = true;
}
-
- }
-
- if (updated) {
- rootScope.$eval();
}
}
}