Knockoutjs在与绑定的内部使用foreach传递值时抛出引用错误
knockoutjs passing value when using foreach inside of with binding throws reference error
我正在尝试使用knockoutjs动态创建选择输入。
我的视图是这样的-
<div data-bind="with: QuestionFilter">
<form>
<div>
<select data-bind="options: categories, optionsText: 'name', optionsValue: 'categoryID', value: selectedCategory">
</select>
</div>
<div data-bind="foreach: details">
<select data-bind="options: subcategories, optionsText: 'name', optionsValue: 'categoryID', value: selectedSubcategory">
</select>
</div>
</form>
</div>
<script type="text/javascript">
ko.applyBindings({
categories = <?php echo json_encode($categories); ?>,
details = ko.observableArray([])
});
</script>
我的JS是这样的-
function QuestionFilter(categories, details) {
var self = this;
self.categories = ko.observableArray(categories);
self.subcategories = ko.observableArray([]);
self.selectedCategory = ko.observable();
self.selectedSubcategory = ko.observable();
self.superSubcategories = ko.observableArray([]);
self.selectedCategory.subscribe(function(category) {
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].parentCategory_id === nameKey) {
self.subcategories.push(myArray[i]);
}
}
}
search(category, categories);
details.push({ firstName: self.subcategories()});
});
self.selectedSubcategory.subscribe(function(subcategory) {
function subsearch(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].parentCategory_id === nameKey) {
self.superSubcategories.push(myArray[i]);
}
}
}
subsearch(subcategory, categories);
details.push({ firstName: self.superSubcategories()});
});
因此,变量selectedCategory
将按预期执行并触发self.selectedCategory.subscribe
中的函数。变量selectedSubcategory
不会像预期的那样执行,而是抛出以下错误- ReferenceError: selectedSubcategory is not defined
。我认为这与使用with
绑定内部的foreach
绑定有关,但我不确定。其他一切都像预期的那样工作,我甚至使用它成功地将几个对象添加到details数组中。
有什么想法或需要澄清吗?
看起来我没有在正确的上下文中访问selectedSubcategory。加上$parents[0].
就得到了想要的结果。它看起来像$parents[0].selectedSubcategory
。奇怪的是,$parents
应该提供与$parents[0]
相同的上下文,但在这种情况下它不起作用…
相关文章:
- gmaps4rails 2.4.6未捕获引用错误:未定义Gmaps
- Wordpress中的Javascript出现匿名函数/引用错误
- 使用dc.js、d3.js和crossfilter引用错误
- 未捕获引用错误:未定义validateform
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- $未定义-未捕获引用错误
- Sitecore”;未捕获引用错误:未定义MultilistWithSearch;
- Wordpress:未捕获引用错误:未定义速度
- Node.js引用错误:未定义类名
- 我该如何解决“;未捕获引用错误:谷歌没有定义"?(谷歌地图API)
- Javascript 未定义错误:引用错误:未定义 ALT
- 为流星重新包装砌体会产生错误“引用错误:窗口未定义”
- 未定义错误引用
- 错误: 引用错误: 未定义发送
- 角度砌体指令隐藏内部元素,错误:引用错误:未定义砌体
- CoffeeScript 在 'for v in values' 中创建一个全局变量 'v',导致事件中的错误引用
- Javascript:未捕获类型错误:引用创建的对象时无法调用未定义的方法“add”
- 架构错误 - 引用错误:未定义电话
- 获取错误“引用错误:未定义事件”
- 打字稿错误引用_this