11

So, I am learning out backbone.js and are currently iterating over some models in a view with the below example. The first snippet works, when the other underscore.js-based one doesn't. Why?

// 1: Working
this.collection.each(function(model){ console.log(model.get("description")); });

// 2: Not working       
_.each(this.collection, function(model){ console.log(model.get("description")); });

What am I doing wrong, as I can't see it by myself?

2
  • 2
    Does anything happen? Are there errors in the console? Commented Dec 7, 2011 at 19:29
  • No. #2 executes silently without any output to the console. Commented Dec 7, 2011 at 19:52

2 Answers 2

24

this.collection is an instance while this.collection.each is a method that iterates the proper object under the covers which is the .models property of a collection instance.

With this said you can try:

_.each(this.collection.models, function(model){ console.log(model.get("description")); });

Which is completely pointless as this.collection.each is a function that does similar to:

function(){
return _.each.apply( _, [this.models].concat( [].slice.call( arguments ) ) );
}

So you might as well use this.collection.each ;P

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for your explanation of why it didn't work along with the solution!
2

Also, you could try...

_.each(this.collection.models, function(model){
    console.log(model.get("description"));
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.