主干模型/集合中的Javascript范围界定问题
Javascript Scoping Issue in Backbone Model / Collection
我使用的是树结构,所以每当我想从树叶到树干时,我都需要做一些漂亮的wonkey查找,但我基本上是在尝试创建一个函数,我可以将函数传递给它,并将/call/bind/应用于原始上下文,这样我就可以看到我原来拥有的变量。一个解释会很棒。
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);
}
}
});
所以我被困在这里,我所想做的就是能够看到传递到startFromLeaves的top函数内部的col变量。我不知道如何使用call/bind/apply,但我猜我的上下文是导致一切失败的原因。
查看underscore.js 上的绑定函数
这允许您传递一个具有此上下文集的函数。例如,你可以做
updateSelectedModelsInTree: function () {
var col = myApp.request('someOtherCollection');
this.collection.startFromLeaves(_.bind(function (m) {
this.updateSelected(m);
// col is undefined in here
}, this));
}
函数中的"this"现在将始终是包含"updateSelectedModelsInTee"的"this"
相关文章:
- 正在全局范围中查找JavaScript函数
- Javascript:'受保护'范围界定
- Javascript innerHTML超出范围的问题
- 可以't访问JavaScript函数范围中的变量
- 用javascript映射和匹配范围
- firefox中的Javascript事件范围问题
- 如何在JavaScript中获取文本区域的选定文本范围
- 从GWT中的HighCharts库(以及一般的Javascript)自定义Stockchart范围选择器按钮
- 获取给定JavaScript范围内的解析函数
- 使用javascript中的var关键字创建块范围的变量
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- 用Javascript编辑范围数据(时间序列)
- 为什么此变量超出范围?JavaScript
- 范围 JavaScript 中变量和对象之间的差异
- Struts:getElementByID来自请求范围(Javascript)
- 查找数组/范围javascript中所有丢失的元素
- 定义数组的隔离范围javascript
- 同时更改两个范围- javascript
- 如何获取一周中存在于某个日期范围(Javascript)中的天数列表
- 随机大整数在范围JavaScript