diff --git a/source/Ox.UI/js/List/List.js b/source/Ox.UI/js/List/List.js index 2b0a718c..17787d0c 100644 --- a/source/Ox.UI/js/List/List.js +++ b/source/Ox.UI/js/List/List.js @@ -1794,34 +1794,37 @@ Ox.List = function(options, self) { /*@ value get/set list value + (id, {key: value, ...}) -> sets value, returns List Element (id, key, value) -> sets value, returns List Element (id, key) -> returns value (id) -> returns all values of id - id id of item + id id of item (or a number, will be interpreted as position) key key if item property value <*> value, can be whatever that property is @*/ - // FIXME: this should accept {key: value, ...} too - that.value = function(id, key, value) { - // id can be a number and will then be interpreted as position - var pos = Ox.isNumber(id) ? id : getPositionById(id), + that.value = function() { + var args = Ox.slice(arguments), + id = args.shift(), + pos = Ox.isNumber(id) ? id : getPositionById(id), $item = self.$items[pos], data = $item ? $item.options('data') : {}; if (arguments.length == 1) { return data; - } else if (arguments.length == 2) { - return data[key]; + } else if (arguments.length == 2 && Ox.isString(arguments[1])) { + return data[arguments[1]]; } else if ($item) { - if (key == self.options.unique) { - // unique id has changed - self.options.selected = self.options.selected.map(function(id_) { - return id_ == data[key] ? value : id_ - }); - } - if (!self.isAsync) { - self.options.items[pos][key] = value; - } - data[key] = value; + Ox.forEach(Ox.makeObject(args), function(value, key) { + if (key == self.options.unique) { + // unique id has changed + self.options.selected = self.options.selected.map(function(id_) { + return id_ == data[key] ? value : id_ + }); + } + if (!self.isAsync) { + self.options.items[pos][key] = value; + } + data[key] = value; + }); $item.options({data: data}); return that; }