mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
basic fields, set, event.component
This commit is contained in:
@@ -72,6 +72,14 @@ _extend(UI.Component, {
|
||||
lookup: function (id) {
|
||||
return this.get(id, true);
|
||||
},
|
||||
set: function (id, value) {
|
||||
var comp = findComponentWithProp(id, this);
|
||||
if (! comp || ! comp[id])
|
||||
throw new Error("Can't find field: " + id);
|
||||
if (! comp[id].$set)
|
||||
throw new Error("Not a settable field: " + id);
|
||||
comp[id].$set(value);
|
||||
},
|
||||
// convenient syntax
|
||||
withData: function (data) {
|
||||
return this.extend({data: data});
|
||||
|
||||
@@ -27,7 +27,24 @@ UI.makeTemplate = function (underlying) {
|
||||
var oldProp = underlying[k];
|
||||
var givenProp = options[k];
|
||||
|
||||
if (k.indexOf(' ') >= 0) {
|
||||
if (k === 'fields') {
|
||||
// XXX basic fields impl
|
||||
// XXX could support functions as initial field values
|
||||
_.each(givenProp, function (fieldValue, fieldName) {
|
||||
var getter = function () {
|
||||
getter.$dep.depend();
|
||||
return getter.$value;
|
||||
};
|
||||
getter.$value = fieldValue; // initial value
|
||||
getter.$dep = new Deps.Dependency;
|
||||
getter.$set = function (v) {
|
||||
getter.$value = v;
|
||||
getter.$dep.changed();
|
||||
};
|
||||
underlying[fieldName] = getter;
|
||||
});
|
||||
|
||||
} else if (k.indexOf(' ') >= 0) {
|
||||
// event handler
|
||||
// XXX clean up
|
||||
var eventType = k.slice(0, k.indexOf(' '));
|
||||
@@ -40,8 +57,9 @@ UI.makeTemplate = function (underlying) {
|
||||
handler: (function (handler) {
|
||||
return function (evt) {
|
||||
// XXX
|
||||
var data = UI.body.findByElement(
|
||||
evt.currentTarget).get();
|
||||
var comp = UI.body.findByElement(evt.target);
|
||||
evt.component = comp;
|
||||
var data = comp.get();
|
||||
handler.call(data, evt);
|
||||
};
|
||||
})(givenProp)
|
||||
|
||||
Reference in New Issue
Block a user