无法读取属性'绑定'绑定2个函数时未定义的
Cannot read property 'bind' of undefined when binding 2 functions
我正在尝试将var绑定到一些函数中,这样我就可以在内部函数中访问它。
function checkIfIsFilter(currentfilters, parentSearch) {
for (var group of currentfilters) {
if (_.find(group.filters, {"search": parentSearch})) {
return group.parentSearch || group.name;
}
}
};
function checkIfSubtopic(currentfilters, memo, value, key) {
if (value.parentSearch) {
value.subtopicOf = checkIfIsFilter(value.parentSearch).bind(null, currentfilters);
}
memo[key] = value
return memo;
}
console.log(_.reduce(currentfilters, checkIfSubtopic.bind(null, currentfilters), {}));
这似乎破坏了函数,特别是在value.subtopicOf =
部分,错误消息为Cannot read property'bind'of undefined。我只想把currentfilters
引入最内部的函数中,这样我就可以引用它。当我把它作为全局变量时(可以直接在checkIfIsFilter
函数内部引用currentfilters
),这很好,但我不能在生产中使用它。
我有一把我一直在工作的小提琴:https://jsfiddle.net/0fttkyey/79/
不确定我做的是正确的,如果有任何意见,我将不胜感激。感谢阅读!
让我们缩短一点
function checkIfIsFilter(currentfilters, parentSearch) {
return group.parentSearch || group.name;
}
function checkIfSubtopic(currentfilters, memo, value, key) {
value.subtopicOf = checkIfIsFilter(value.parentSearch).bind(null, currentfilters);
}
console.log(_.reduce(currentfilters, checkIfSubtopic.bind(null, currentfilters), {}));
注意,checkIfIsFilter
不返回函数,您正在执行
checkIfIsFilter(value.parentSearch).bind();
您正在调用checkIfIsFilter
,它返回group.parentSearch
(或name
),返回值是您试图绑定到的值?
首先,如果您想用this
值和参数调用函数,您可以只使用call
、apply
,或者在您的情况下,直接调用它,因为this
值似乎无关紧要。
其次,看起来您正在尝试使用一个动态属性名称,它只适用于括号符号
function checkIfIsFilter(currentfilters, parentSearch) {
for (var group of currentfilters) {
if (_.find(group.filters, {"search": parentSearch})) {
return group[parentSearch] || group.name;
}
}
};
function checkIfSubtopic(currentfilters, memo, value, key) {
if (value.parentSearch) {
value.subtopicOf = checkIfIsFilter(value.parentSearch, currentfilters);
}
memo[key] = value
return memo;
}
console.log(_.reduce(currentfilters, checkIfSubtopic.bind(null, currentfilters), {}));
FIDDLE
这里似乎不需要使用bind,因为thisArg并没有真正被使用。Lodash提供了一个名为partial的不同函数,它可以准确地执行您想要执行的操作,尽管它被称为partial。
我把你代码的最后一行改成了这个:
console.log(_.reduce(currentfilters, _.partial(checkIfSubtopic, currentfilters)));
此处的示例:https://jsfiddle.net/yqt8y0hb/
相关文章:
- 嵌套的foreach绑定未正确显示
- 角度双向绑定未按预期工作
- 基本角度(绑定未显示)
- 绑定未按预期保存值
- 角度绑定未正确更新
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么
- 挖空绑定自定义组件,使其不与中心视图模型冲突
- 如何强制挖空以重新绑定自定义绑定
- 挖空视图模型绑定未定义错误
- 角度2 + 图表.js 和 ng2 图表.数据绑定未按预期工作
- 如何在 AngularJS 中绑定自定义事件
- 数据绑定未在视图页面中显示数据
- Ko_selectize数组对象绑定未定义
- 挖空模板绑定未更新 UI
- AngularJS双向绑定未更新
- 为什么在使用返回的RequireJS函数中声明的Click绑定时未定义
- 无法绑定自定义元素
- Knockout:在创建自定义绑定后,绑定未应用于页面的一部分
- 视图绑定未定义
- 指令绑定未定义