aboutsummaryrefslogtreecommitdiffstats
path: root/src/widgets2.js
diff options
context:
space:
mode:
authorMisko Hevery2010-03-25 14:43:05 -0700
committerMisko Hevery2010-03-25 14:43:05 -0700
commit4fa166866b97d4f4dbd21514dbd674347da0a109 (patch)
tree6e6a79474f47481a596fc28cb61546f9506d6db0 /src/widgets2.js
parentb814c79b58deeeeaa12b03261399ef80c0d6cc9f (diff)
downloadangular.js-4fa166866b97d4f4dbd21514dbd674347da0a109.tar.bz2
input select-one now works
Diffstat (limited to 'src/widgets2.js')
-rw-r--r--src/widgets2.js26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/widgets2.js b/src/widgets2.js
index b67694b1..a8d17105 100644
--- a/src/widgets2.js
+++ b/src/widgets2.js
@@ -73,8 +73,8 @@ var NG_ERROR = 'ng-error',
'reset': buttonWidget,
'image': buttonWidget,
'checkbox': inputWidget('click', modelAccessor, checkedAccessor, false),
- 'radio': inputWidget('click', modelAccessor, radioAccessor, undefined)
-// 'select-one': [null, 'change'],
+ 'radio': inputWidget('click', modelAccessor, radioAccessor, undefined),
+ 'select-one': inputWidget('click', modelAccessor, valueAccessor, null)
// 'select-multiple': [[], 'change'],
// 'file': [{}, 'click']
};
@@ -84,9 +84,10 @@ function inputWidget(events, modelAccessor, viewAccessor, initValue) {
var scope = this,
model = modelAccessor(scope, element),
view = viewAccessor(element),
- action = element.attr('ng-action') || '';
- var value = view.get() || initValue;
+ action = element.attr('ng-action') || '',
+ value = view.get() || initValue;
if (isDefined(value)) model.set(value);
+ this.$eval(element.attr('ng-init')||'');
element.bind(events, function(){
model.set(view.get());
scope.$eval(action);
@@ -95,13 +96,14 @@ function inputWidget(events, modelAccessor, viewAccessor, initValue) {
};
}
-angularWidget('INPUT', function input(element){
- return function(element) {
- this.$eval(element.attr('ng-init')||'');
- (INPUT_TYPE[lowercase(element[0].type)] || noop).call(this, element);
- };
-});
+function inputWidgetSelector(element){
+ return INPUT_TYPE[lowercase(element[0].type)] || noop;
+}
-angularWidget('TEXTAREA', function(){
- return textWidget;
+angularWidget('INPUT', inputWidgetSelector);
+angularWidget('TEXTAREA', inputWidgetSelector);
+angularWidget('BUTTON', inputWidgetSelector);
+angularWidget('SELECT', function(element){
+ this.descend(true);
+ return inputWidgetSelector.call(this, element);
});