Since implementing a $.map() working on objects is not an easy task, I've given up the idea.
BTW, here is the project if you are interested: http://github.com/gminuses/jquerymvc. Regards On Oct 31, 12:49 am, Scott Sauyet <scott.sau...@gmail.com> wrote: > On Fri, Oct 30, 2009 at 11:13 AM, gMinuses <gminu...@gmail.com> wrote: > > OK, the real-world use is this: > > > I'm writing a plugin for jquery that implements mvc pattern, and it > > works like this: > > > [ ... ] > > > $.mvc.controller({ > > myController: { > > myAction: function() { > > // Pass in a callback function, > > // once model has retrieved the data, > > // it'll pass the data as the first parameter > > // to the callback function > > this.model('myModel').myMethod(function(data) { > > // data returned > > }); > > } > > } > > }); > > > $.mvc.model({ > > myModel: { > > myMethod: function() { > > // model passes the data by returning it directly > > return 'data'; > > } > > }, > > > myAnotherModel: { > > myAnotherMethod: function() { > > this.ajax({ url: './', success: function(data) { > > // or by returning it in the ajax callback function > > return data; > > }}) > > } > > } > > }); > > So, to make sure I understand, you want to write a function (to be > used by an extended $.map) that wraps either myModel.myMethod or > myAnotherModel.myAnotherMethod to be called by myController.myAction, > which will supply a callback function to actually handle the actual > data returned by the methods. Is that right? > > First of all, good luck. Whenever I've needed to get data from a > possibly synchronous or possibly asynchronous source, I've had to > define a method that accepts a callback and extend that in all cases, > even the otherwise synchronous ones. Scoping seems a minor worry > compared to the synchronous/asynchronous dichotomy. I'm really not > sure how you'll manage to do this. Do you already have an > implementation? > > But then the question becomes, how do you want $.map to work for your > object? Does it modify the object in place? (I would strongly argue > against this, not least because that would be at variance with how it > works for sequences.) Is the model object allowed to have methods > that somehow escape the wrapping, like the helper function I defined > above? Can the wrapper function ignore some properties? > > > This is when I need to modify user defined functions to support such > > usage, and it comes the problem of scoping. It'll be very handy if > > $.map() works on objects. > > > And I believe once an application gets more and more complicated, > > it'll stand a good chance that some kind of hash-like objects need to > > be modified. > > Right now, as Robert pointed out, we're using the existence of a > numeric "length" property to determine if an object is array-like. > Are you going to prohibit model classes from having a property named > "length"? If not, how would you distinguish the current array-like > behavior of working only with elt[0], elt[1], ... elt[length -1] and > your new behavior that would use any other named properties? > > It strikes me that it's very easy to add a new $.objMap function if > you find it necessary for your project. I certainly am not seeing any > argument for the widespread utility of adding this to $.map in the > core, nor do I see some possibly trivial implementation that makes it > such a minor addition that we can safely add it without worry. Can > you supply either of those? > > -- Scott -- You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-...@googlegroups.com. To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en.