Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 16 20:07
    matthewp commented #5384
  • Oct 16 20:06
    matthewp labeled #5384
  • Oct 16 20:06
    matthewp opened #5384
  • Oct 16 19:53
    matthewp opened #5383
  • Oct 16 16:23
    phillipskevin closed #4841
  • Oct 15 21:43

    phillipskevin on master

    Update dist for release (compare)

  • Oct 15 21:43

    phillipskevin on v6.1.1

    Update dist for release 6.1.1 (compare)

  • Oct 15 21:34

    phillipskevin on can-observable-mixin-1.0.2

    (compare)

  • Oct 15 21:34

    phillipskevin on master

    fix(package): update can-observ… Merge branch 'master' into gree… Merge pull request #5382 from c… (compare)

  • Oct 15 21:34
    phillipskevin closed #5382
  • Oct 15 21:34

    phillipskevin on can-make-map-1.2.2

    (compare)

  • Oct 15 21:34

    phillipskevin on master

    fix(package): update can-make-m… Merge pull request #5380 from c… (compare)

  • Oct 15 21:34
    phillipskevin closed #5380
  • Oct 15 20:30
    phillipskevin synchronize #5382
  • Oct 15 20:30

    phillipskevin on can-observable-mixin-1.0.2

    fix(package): update can-observ… fix(package): update can-simple… Merge pull request #5372 from c… and 2 more (compare)

  • Oct 15 20:30
    phillipskevin opened #5382
  • Oct 15 20:28

    phillipskevin on can-simple-map-4.3.3

    (compare)

  • Oct 15 20:28

    phillipskevin on master

    fix(package): update can-simple… Merge pull request #5378 from c… (compare)

  • Oct 15 20:28
    phillipskevin closed #5378
  • Oct 15 20:26

    phillipskevin on can-observable-mixin-1.0.1

    (compare)

Chris Gomez
@akagomez
The reason I ask is that get is meant to describe a value that is made up of other values. And since that value is dependent on other values, the get function will only be evaluated when one of those dependent values are changed. In other words, map.attr(‘list’) won’t call get because none of its dependent values have changed. However, when you pass a value to the can.compute like this.. map.attr(‘computedProp’, anotherList) the compute re-evaluates due to the new lastSetVal.
Aside: In your original example you do this.scope.dimensionList(). That’s the incorrect way to read the value. What you should do instead is this.scope.attr(‘dimensionList’).
Okay, so you want an initial list, and you’d like to filter it on keyup?
opolyo01
@opolyo01
yeah
Chris Gomez
@akagomez
Gotcha.
opolyo01
@opolyo01
I am thinking to create a searchTerm compute that would be used inside of get for dimensionList
and then change searchTerm inside of the keyUp event
Chris Gomez
@akagomez
You can define a default with the value method. Provide it a function and it will populate that value for all new instances of the map if one isn’t passed when calling new.. new CustomMap(props).
That’s not a bad idea either.
opolyo01
@opolyo01
I am just trying to figure out where to throw this searchTerm variable
in the past I would simply do this.searchTerm = can.compute("")
but with can.Component.. would it belong in my can.Map
Chris Gomez
@akagomez
Yeah, in your view model.
(or scope if you haven’t made the change)
opolyo01
@opolyo01
Thanks, it works. Now I need to add "change, blur" on top of keyUp event and I am all set
Chris Gomez
@akagomez
Great! In the meantime, I put together this demo: http://jsbin.com/vusuzu/1/edit?js,console
I'm currently working on a much easier way to derive a bound, filtered list from another, so stay tuned: https://github.com/canjs/can-derive
opolyo01
@opolyo01
pretty useful
opolyo01
@opolyo01
Is it the correct way defining the same handler for multiple events
'.search-dimension keyup': this.searchTermChanged,
'.search-dimension change': this.searchTermChanged,
'.search-dimension blur': this.searchTermChanged,
        searchTermChanged: function(el, ev){
            var searchTerm = el.val();
            this.scope.attr('searchTerm', searchTerm);
        },
somehow it only works only if I do -- '.search-dimension keyup': function(el, ev)
Chris Gomez
@akagomez
@opolyo01 'el event
Whoops…
’el event’: ‘handler’
opolyo01
@opolyo01
nice
'.search-dimension keyup': 'searchTermChanged',
'.search-dimension change': 'searchTermChanged',
'.search-dimension blur': 'searchTermChanged',
'.search-dimension search': 'searchTermChanged',
works
Alex
@whitecolor

is is possible to to like this

{{#each items "item"}}

//refere tho current item as "item", not {.} or this
{{item}}

{{/#item}}

?

Alexis Abril
@alexisabril

Any reason why binding to a list internally would be a bad idea?

var Person = can.Map.extend({
  define: {
    items: {
      set: function(val) {
        val.bind('change', console.log);
        return val;
      }
    }
  }
});

I believe we clean up those bindings when a new “items” list is set and when the instance of person is destroyed, but can’t recall offhand #lazyweb

Alexis Abril
@alexisabril

also, should the can.List change event be adding nested properties to the index argument?

var list = new can.List();

list.bind(‘change’, function(ev, index) {});

var foo = new can.Map({ name: ‘foo’ });
list.push(foo); //index is 0, expected

foo.attr(‘name’, ‘bar’); //index is 0.name, I would expect 0

http://jsbin.com/cuqato/1/edit?js,output

Chris Gomez
@akagomez
@alexisabril For your second example (“0.name”), that seems right to me. Since the “name” property changed on the item in the “0” index position.
Isn’t that argument called “attr”, not “index”? Context matters.
Alexis Abril
@alexisabril
@akagomez that’s true, we do document “index” as where the change took place. perhaps my issue is with calling it “index” in the docs: “0.name” isn’t the index
Chris Gomez
@akagomez
Yeah. Understandable. In a simple list, “attr” would look like “index”.
Alexis Abril
@alexisabril

What’s everyone’s approach to abstracting out arbitrary data from a model?

For instance, suppose a user model:

{ id: 0, name: ‘Alexis’ }

However, in the template we would also want:

{ isEditing: false }

You wouldn’t want to add that attribute directly to the model as it has no benefit being sent back to the server(just view noise).

The elegant answer is inheritable defines(I think), but I’m curious what everyone’s approach has been thus far.

opolyo01
@opolyo01
@alexisabril I just usually have some _.map somewhere in controller code that being passed to the template. It is probably better to abstract in the UI model class like you do.
Well, I am currently stuck with another issue that might not be can.js related, but part of can.js application that uses clientState
$.extend(true, {}, this.constructor.defaults, overrides)
jquery.js:300 Uncaught RangeError: Maximum call stack size exceeded
at Function.jQuery.extend.type (http://localhost:8126/bower_components/jquery/dist/jquery.js:300:16)
Has anyone ever had this issue? I simply extending two objects.. overrides has a property of clientState that is pretty big in size for some states
David Luecke
@daffl
@opolyo01 Could it be that you have a circular reference in your object tree? jQuery's deepExtend might not be able to deal with that.
Chris Gomez
@akagomez
@alexisabril Does serialize: false not handle that case? Or am I misunderstanding the problem?
opolyo01
@opolyo01
@daffl Yeah, it is. If I try to do JSON.stringify on it, it throws circular reference error. How do you deal with such issues? I am thinking to simply delete properties that cause circular reference, and update the code that relies on them.
avg6003
@avg6003
This message was deleted
This message was deleted
avg6003
@avg6003
can anyone tell me how to give fade effect on loading template? Here is my code:
'define(['can','jquery','jqueryui'], function(can,$) {
var PopUpController = can.Control.extend({
defaults: {
view: 'views/signup.hbs'
}
}, {
init: function(element, options) {
$('#popup').fadeIn('slow',function(element){
element.html(can.view(options.view, {}));
});
$('.content').click(function(){
$('#popup').fadeOut('slow');
})
},
})
return PopUpController;
})`
fadeOut is working but fadeIn isn't
I am new here sorry if there is some typo or formatiing!!