diff options
| author | Misko Hevery | 2010-12-01 20:29:54 -0800 |
|---|---|---|
| committer | Misko Hevery | 2010-12-02 22:45:57 -0800 |
| commit | 5a8ad8fe329fc09898ff43a060710265d38393be (patch) | |
| tree | 95058036d40b1dd993e2a9c4094ebd34b2751707 /src/directives.js | |
| parent | 41d5938883a3d06ffe8a88a51efd8d1896f7d747 (diff) | |
| download | angular.js-5a8ad8fe329fc09898ff43a060710265d38393be.tar.bz2 | |
Closes #170. Corrected the behavior of select when options are ng:repeated
- Delete $postEval method, as it was a hack
Diffstat (limited to 'src/directives.js')
| -rw-r--r-- | src/directives.js | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/directives.js b/src/directives.js index 8a76f17a..d40d6120 100644 --- a/src/directives.js +++ b/src/directives.js @@ -304,7 +304,8 @@ angularDirective("ng:bind-template", function(expression, element){ var REMOVE_ATTRIBUTES = { 'disabled':'disabled', 'readonly':'readOnly', - 'checked':'checked' + 'checked':'checked', + 'selected':'selected' }; /** * @workInProgress @@ -359,27 +360,31 @@ var REMOVE_ATTRIBUTES = { angularDirective("ng:bind-attr", function(expression){ return function(element){ var lastValue = {}; - var updateFn = element.parent().data('$update'); + var updateFn = element.data($$update) || noop; this.$onEval(function(){ - var values = this.$eval(expression); + var values = this.$eval(expression), + dirty = noop; for(var key in values) { var value = compileBindTemplate(values[key]).call(this, element), specialName = REMOVE_ATTRIBUTES[lowercase(key)]; if (lastValue[key] !== value) { lastValue[key] = value; if (specialName) { - if (element[specialName] = toBoolean(value)) { - element.attr(specialName, value); + if (toBoolean(value)) { + element.attr(specialName, specialName); + element.attr('ng-' + specialName, value); } else { - element.removeAttr(key); + element.removeAttr(specialName); + element.removeAttr('ng-' + specialName); } - (element.data('$validate')||noop)(); + (element.data($$validate)||noop)(); } else { element.attr(key, value); } - this.$postEval(updateFn); + dirty = updateFn; } } + dirty(); }, element); }; }); |
