Я работаю с древовидной структурой, поэтому мне нужно делать некоторые красивые находки, когда я хочу работать от листьев до ствола, но я в основном пытаюсь создайте функцию, с помощью которой я могу передать функцию и применить/call/bind/something исходный контекст, чтобы я мог видеть переменные, которые у меня были изначально. Объяснение было бы удивительным.Javascript Scope Issue in Backbone Model/Collection
layerListView = Backbone.Marionette.CollectionView.extend({
updateSelectedModelsInTree: function() {
var col = myApp.request('someOtherCollection');
this.collection.startFromLeaves(function (m) {
this.updateSelected(m);
// col is undefined in here
}, this);
}
});
layerCollection = Backbone.Collection.extend({
startFromLeaves: function (doToModel, context) {
if (!this.models) return;
for (var i = this.models.length - 1; i >= 0; i--) {
var model = this.models[i],
tag = this.models[i].get('tag');
if (tag == 'branch') this.startFromLeaves(arguments);
doToModel.call(context, model);
}
}
});
поэтому я застрял здесь, и все, что я хочу сделать, это быть в состоянии видеть переменную COL внутри верхней функции, которая передается в startFromLeaves. Я понятия не имею, как использовать call/bind/apply, но я предполагаю, что мой контекст - это то, что отбрасывает все.
'col' должны быть видны там, вы уверены, что' MYAPP. request ('someOtherCollection') 'не возвращает' undefined'? –
Он определенно возвращает коллекцию, которую она должна. это как раз то, что, как только я вхожу внутрь функции, которую я передаю в startFromLeaves, она не существует –
Но 'col' захватывается закрытием, это не имеет никакого отношения к' this' или контексту или что-то в этом роде. Есть ли шанс на демонстрацию? Я предполагаю, что код в вашем вопросе не рассказывает всю историю. –