Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Dec 04 02:00
    jpmanson starred canjs/canjs
  • Nov 14 12:55
    falleng0d starred canjs/canjs
  • Nov 13 08:06
    g1964j starred canjs/canjs
  • Nov 13 01:34
    bradms starred canjs/canjs
  • Nov 11 18:47

    eddypjr on master

    Update dist for release (compare)

  • Nov 11 18:46
    eddypjr added as member
  • Nov 11 18:30

    eddypjr on v6.6.2

    Update dist for release 6.6.2 (compare)

  • Nov 11 17:17

    justinbmeyer on v6.6.2

    (compare)

  • Nov 11 16:56
    eddypjr removed as member
  • Nov 11 16:52
    eddypjr added as member
  • Nov 11 16:34

    eddypjr on v6.6.2

    Update dist for release 6.6.2 (compare)

  • Nov 08 13:14
    italy starred canjs/canjs
  • Nov 03 23:12
    shoumaw starred canjs/canjs
  • Oct 22 14:19
    MCKanpolat starred canjs/canjs
  • Oct 21 12:12
    bohanyang starred canjs/canjs
  • Oct 14 19:14

    bmomberger-bitovi on v3.9.0

    (compare)

  • Oct 14 18:57

    bmomberger-bitovi on v3.9.0

    3.8.0 (compare)

  • Oct 14 05:46
  • Oct 12 19:03
    justinbmeyer commented #5518
  • Oct 12 18:59
    Dziejo93 starred canjs/canjs
Rob Lao
@viewplatgh
Could canjs team please take care of typescript a bit
Kevin Phillips
@phillipskevin
arrow functions don’t get a new context, so it will work like that in javascript also
canlist.extend({
    foo:() => {
        // `this` is the window
    },
    bar() {
        // `this` is the List instance
    }
})
thanks! using function() {...} works
Nico R.
@nriesco
@phillipskevin I forgot to remove the first two letters (‘on’) from the event name, now I’m using ($focusout)=".save(.)” and it works :-)
Kevin Phillips
@phillipskevin
:thumbsup: great @nriesco
Nico R.
@nriesco
is it possible to do this in can 2.x? this.attr(‘myAttr’, new MyObject({a:1,b:2})
and then in the .stache file use {{#with}} and access/edit the object properties?
Nico R.
@nriesco
I couldn't make it work using donejs
Nico R.
@nriesco
any ideas?
Kevin Phillips
@phillipskevin
@nriesco can you share a JSBin?
lmagarian
@lmagarian
I have a property on a superMap that needs to load via another API. I'm trying this but know it's not right. Any tips?
"possibleEvents": {
"value": [],
"get": function () {
return Event.getList({}).then( function ( eventList ) {
return eventList;
});
}
},
Nico R.
@nriesco
@phillipskevin this would be the closest to what I’m trying to do
Chasen Le Hara
@chasenlehara
@lmagarian You could assign eventList to another property in your view model, so possibleEvents is the promise and eventList is the array.
I personally like to follow this pattern of having one property be the promise: https://github.com/donejs/bitballs/blob/master/public/components/player/list/list.js#L64-L68
Then use the promise’s value in a template, or wherever else: https://github.com/donejs/bitballs/blob/master/public/components/player/list/list.stache#L19
lmagarian
@lmagarian
Thanks @chasenlehara
Chasen Le Hara
@chasenlehara
👍
Chasen Le Hara
@chasenlehara
@nriesco I think the Type is creating a new instance when you’re expecting it to be null.
Also, new Map() is not what you want, but just new Person(), right?
Here’s how I think I would approach what you’re doing: http://jsbin.com/taguluzeku/1/edit?html,js,output
lmagarian
@lmagarian
@chasenlehara will that make more than one API call if playersPromise.value is referenced in multiple places?
Nico R.
@nriesco
@chasenlehara thanks, it looks good and it works as I expected. I’ll try to modify my donejs project to see if I can reproduce what you did.
Chasen Le Hara
@chasenlehara
@lmagarian It shouldn’t; value is only run the first time to get the initial value.
Even if it were in a get, it would only run again if something observable changed, but there’s nothing observable in that function.
Let’s say you did need to make that API call again because the arguments changed. That might look something like:
    orderBy: {
        value: "name"
    },
    playersPromise: {
        get: function(){
            return Player.getList({orderBy: this.orderBy});
        }
    }
Nico R.
@nriesco
@chasenlehara it does work in http://jsbin.com/taguluzeku/1/edit?html,js,console,output but when including it into my donejs project it will create the instance and even with default values, but if you modify any of the properties then it will “reset” the object (the if condition is met):
type: function(newPerson) {
  if (newPerson && newPerson instanceof Person === false) {
    console.log('>>> debug data 1:', newPerson);
    return new Person(newPerson);
  }
  return newPerson;
}
the problem after doing some debug is that the newPerson is the value of the input field, so it will never have any valid data again (as it is just one plain value)
I thought newPerson would at least be an object but only the currently selected input value is passed as newPerson
could it be can 2.x that is causing this?
Kevin Phillips
@phillipskevin
{($value)}=“newPerson” is binding the value of the <input> with newPerson, right?
Nico R.
@nriesco
@phillipskevin I made a mistake this is the JSbin: http://jsbin.com/kelilib/1/edit?html,js,output
the approach used by @chasenlehara works
but when I use it within the donejs project it won't
the way I use it looks like the jsbin (the last one) so you can set each of the properties
whenever you modify any of the inputs that are binded to a property of this new object then every input field is set with the return new Person(newPerson) code
and newPerson contains whatever you wrote on one of the inputs
not the complete object
Nico R.
@nriesco
it is doing something equivalent to this: myObjectInstance = myObjectInstance.propertyOne
every time you modify (even before saving) it will do that so as a result you enter data on any field and then all the fields are set to null/empty
Kevin Phillips
@phillipskevin
maybe it’s an issue with {{#with}}, can you try explicitly doing like {($value)}=“newPerson.name”?
@nriesco
Jeroen Cornelissen
@jeroencornelissen

How do you handle a bulk save or destroy?
I have something like this: let todos = TodoModel.getList() and every todo has a checkbox and are stored in a selection DefineList.
Now I want to delete the selected todo items.

selection.forEach(todo => {
  todo.destroy();
});

This results in multiple requests to the backend, how can I group these request?
Do I make a custom funtion in my model bulkDestroy and then splice them out of my todos list? Or how do you handle this?

lmagarian
@lmagarian
@chasenlehara thanks!
Nico R.
@nriesco
@phillipskevin your approach does work (instead of {{#with}} access to each variable using newPerson.xxxxx)