Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Feb 14 12:04
    CalvinWalzel starred canjs/canjs
  • Feb 13 05:42
    liyanlong starred canjs/canjs
  • Feb 11 22:25
    greenkeeper[bot] commented #5450
  • Feb 11 22:25

    greenkeeper[bot] on semver-7.1.3

    chore(package): update semver t… (compare)

  • Feb 11 19:20

    greenkeeper[bot] on steal-tools-2.2.6

    (compare)

  • Feb 11 19:06

    greenkeeper[bot] on steal-tools-2.2.6

    chore(package): update steal-to… (compare)

  • Feb 11 11:17

    greenkeeper[bot] on webpack-4.41.6

    (compare)

  • Feb 11 11:06

    greenkeeper[bot] on webpack-4.41.6

    chore(package): update webpack … (compare)

  • Feb 10 23:01
    cherifGsoul commented #5468
  • Feb 10 23:00
    cherifGsoul reopened #5468
  • Feb 10 22:59
    cherifGsoul closed #5468
  • Feb 10 22:59
    cherifGsoul commented #5468
  • Feb 09 05:23
  • Feb 08 20:24
    piraz opened #5468
  • Feb 08 10:41
    randy-r starred canjs/canjs
  • Feb 07 23:40
  • Feb 07 23:40
    MedRedha starred canjs/canjs
  • Feb 03 22:16

    greenkeeper[bot] on @octokit

    (compare)

  • Feb 03 22:15

    greenkeeper[bot] on @octokit

    chore(package): update @octokit… (compare)

  • Feb 03 06:23

    greenkeeper[bot] on @octokit

    (compare)

Chris Gomez
@akagomez
@halcyonandon You’ve bound to the event. Not the insertion of the DOM, so this makes sense.
What type of DOM manipulation are you intending to do once that DOM is inserted? I ask because most of the time this is a better job for the template.
Gerard Finnerty
@halcyonandon
@akagomez I've got bootstrap popovers that need to be instantiated when the elements re-render on change of edit mode, since the elements are added and removed from the dom. I'm not sure how i would do so from the template
Chris Gomez
@akagomez
Ah. I see.
There are some options.
You could also not remove your DOM and instead just hide it.
Gerard Finnerty
@halcyonandon
its a complex ui, the edit mode needs to be removed as a requirement , but thank you, this gave me some alternatives to the setTimeout to play with
opolyo01
@opolyo01
Found an issue, but trying to figure out the best way to resolve deferred without making separate AJAX calls
find: function ( type, params ) {
var key;
key = JSON.stringify( params );
if ( ! promiseStore [ key ] ) {
promiseStore[ key ] = $.ajax({
url: can.sub(steal.config('API')[ type ], params, true),
data: params,
type: 'GET',
dataType: 'json',
// work around the ajax bug in chrome
cache: false
});
        }
        return promiseStore[ key ];
    },
I call this find method in bunch of components, and goal is to make a single Ajax request, and get the rest from Cache. However, the first then is getting resolved, but other then calls already being resolved
Is there a good pattern to solve this issue? I am thinking to add else wrap it in the separate Deferred
Patrick Clancy
@patrickclancy
I’m starting to add validation to a can v2.3-pre project. Is the validation plugin still the perferred way to define model validation?
Matthew Phillips
@matthewp
unfortunately yes
dylanrtt
@dylanrtt
what does the future of validations look like?
Patrick Clancy
@patrickclancy
@dylanrtt I found this. bitovi/canjs#1111
Matthew Phillips
@matthewp
yeah i think it's one of those things that no one has figured out yet
opolyo01
@opolyo01
@akagomez So to make caching work, do I need to override every method with "make" prefix? Another question is how to actually get this 'findAllData' deferred to work in case if I actually not relying on resources, but making an actual $.ajax request
dylanrtt
@dylanrtt
@opolyo01 I don't think the make prefix works with anything other than the standard functions, so if you have a lot of custom methods on your model, you might have to implement something like what you have above
opolyo01
@opolyo01
does this look right?
if ( ! promiseStore [ key ] ) {
promiseStore[ key ] = $.ajax({
url: can.sub(steal.config('API')[ type ], params, true),
data: params,
type: 'GET',
dataType: 'json',
// work around the ajax bug in chrome
cache: false
});
return promiseStore[ key ];
}
else{
var dfd = $.Deferred();
dfd.promise(promiseStore[ key ]);
dfd.resolve( JSON.parse(promiseStore[ key ].responseText) );
return promiseStore[ key ];
}
dylanrtt
@dylanrtt

@opolyo01 you can probably do it exactly like the QuickCache example. just copy the makeFindAll function out so it's independent and call it like this

var TodoModel = can.Model.extend({
  findTodos: makeCacheable(function(){
    return $.ajax(/*params*/);
  })
}, {});

That should allow you to make any request function cacheable. You can still use it with the standard find methods like this:

var QuickCacheModel = can.Model.extend({
  makeFindAll: makeCacheable
}, {});
Curtis Cummings
@ccummings
I’m trying to create a nested Map that can have children that are the same type. Here’s a jsbin of the setup: http://jsbin.com/peyesififu/1/edit
Depending on what’s defined first I can either have the list be the right type or the map, but not both
dylanrtt
@dylanrtt
@ccummings I had this issue before. Basically one of them needs to be defined before you can reference it in the other. I solved this by modifying the define block of one prototype after declaring both http://jsbin.com/yosakoqozo/1/edit?html,js,console
Curtis Cummings
@ccummings
My brain must be fried. I can also modify the static Map parameter of the list after both are defined
both ways will work. Thanks!
Ilya Fadeev
@ilyavf
hey guys, how can i listen to a list element's property change?
var Row = can.Map({
    define: {
        isChecked: {
            type: 'boolean'
        }
    }
});
var VM = can.Map({
    define: {
        items: {
            Type: Row.List
        }
    }
});
can.Component.extend({
    events: {
        '{scope.items. ??? .isChecked} change': function(){ 
            console.log('item is checked'); 
        }
    }
});
opolyo01
@opolyo01
Hey guys, I am facing an issue where I have 3 Deferreds, and only first one resolves. Other two getting rejected, even though they are all the same deferreds. Any idea?
basically, it is 3 $.ajax deferreds that should have ".then" to have a callback executed, but only first then getting executed. If I do from chrome console it works fine
David Luecke
@daffl
What's the reason for the other Deferreds to get rejected?
Justin Meyer
@justinbmeyer
@ilyavf why are you doing this?
Ilya Fadeev
@ilyavf
@justinbmeyer I have a grid with rows and i need to maintain a hash map of selected rows
opolyo01
@opolyo01
@daffl no idea why is getting reject when I call this from my components
if ( ! promiseStore [ key ] ) {
                promiseStore[ key ] = $.ajax({
                    url: can.sub(steal.config('API')[ type ], params, true),
                    data: params,
                    type: 'GET',
                    dataType: 'json',
                    // work around the ajax bug in chrome
                    cache: false
                });

            }
promiseStore[ key ].then(function(resp){
console.log(resp);
});

return promiseStore[ key ];
Justin Meyer
@justinbmeyer
@ilyavf can you do this w/ a compute instead
opolyo01
@opolyo01
3 components will call this model and I get 3 console.log printed
Justin Meyer
@justinbmeyer
@opolyo01 can you put that in a ```
@patrickclancy regarding model validation ... I would not use our validation plugin
it's probably more simple to use the define plugin
Patrick Clancy
@patrickclancy
@justinbmeyer how would you suggest using the define plugin?
Ilya Fadeev
@ilyavf
@justinbmeyer Like, have a compute property which iterates through my list of items and reads item's property I am interested to listen to?
Patrick Clancy
@patrickclancy
with getters and setters
Justin Meyer
@justinbmeyer
@patrickclancy something like:
define: {
  isNameValid: {
    get: function(){
      return !!this.attr("name")
    }
  }
}
and you could create "mixins" that help set this up
define: validators({}, validateExists("name"))