Javascript KnockoutJS动态设置输入';s值
我试图使用knockoutjs数据绑定动态设置select输入的值。如果我只是在Javascript KnockoutJS动态设置输入';s值,javascript,knockout.js,scope,subscribe,parents,Javascript,Knockout.js,Scope,Subscribe,Parents,我试图使用knockoutjs数据绑定动态设置select输入的值。如果我只是在元素的属性中输入值:$parents[0]。选择了子类别,它就可以正常工作。但当我试图传递值时,它不起作用 我的看法是这样的- <div data-bind="with: QuestionFilter"> <form> <div data-bind="foreach: details"> <select data-bind="options: subc
元素的属性中输入值:$parents[0]。选择了
子类别,它就可以正常工作。但当我试图传递值时,它不起作用
我的看法是这样的-
<div data-bind="with: QuestionFilter">
<form>
<div data-bind="foreach: details">
<select data-bind="options: subcategories, optionsText: 'name', optionsValue: 'categoryID', value: subcategoriesValue">
</select>
</div>
</form>
</div>
<script type="text/javascript">
ko.applyBindings({
categories = <?php echo $categories; ?>,
details = ko.observableArray([])
});
</script>
function QuestionFilter(categories, details) {
var self = this;
self.subcategories = ko.observableArray([]);
self.selectedSubcategory = ko.observable();
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].parentCategory_id === nameKey) {
self.subcategories.push(myArray[i]);
}
}
}
search(2, categories);
details.push({ firstName: self.subcategories(), lastName: self.selectedSubcategory()});
});
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()});
});
ko.applyBindings({
类别=,
详细信息=可观察到的ko([])
});
我的JS看起来像这样-
<div data-bind="with: QuestionFilter">
<form>
<div data-bind="foreach: details">
<select data-bind="options: subcategories, optionsText: 'name', optionsValue: 'categoryID', value: subcategoriesValue">
</select>
</div>
</form>
</div>
<script type="text/javascript">
ko.applyBindings({
categories = <?php echo $categories; ?>,
details = ko.observableArray([])
});
</script>
function QuestionFilter(categories, details) {
var self = this;
self.subcategories = ko.observableArray([]);
self.selectedSubcategory = ko.observable();
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].parentCategory_id === nameKey) {
self.subcategories.push(myArray[i]);
}
}
}
search(2, categories);
details.push({ firstName: self.subcategories(), lastName: self.selectedSubcategory()});
});
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()});
});
功能问题过滤器(类别、详细信息){
var self=这个;
self.subcategories=ko.observatarray([]);
self.selectedSubcategory=ko.observable();
函数搜索(名称键,myArray){
对于(var i=0;i
除上述内容外,我还尝试使用lastName:$parents[0].self.selectedSubcategory()
,带引号和不带引号。我还尝试过这样设置
元素的值:值:$parents[0]。lastName
也有引号和+
,但没有乐趣
需要任何想法或澄清吗?不清楚您想要什么价值,因为
在foreach
绑定中,您的范围是细节的上下文。如果所需的属性位于详细信息
对象中,只需将该属性作为值
绑定即可。如果您想跳出一个级别,那么您可以使用$parent
,显然$root
将为您提供基本绑定模型。作为旁注,firstName:self.subcategories()
似乎很奇怪。描述你想要达到的最终结果的概括性也有助于回答你的问题。谢谢你的关注。我希望能够通过details.push()
将$parent.self.selectedSubcategory()
传递到
值属性中。details
应该表示什么,因为您正在执行不同结构对象的.push
。由于您正在按self.selectedSubcategory()
作为lastName
推送,因此您可以使用该属性,但另一个.push
只有firstName
会导致问题。您可能还希望使lastName
成为可观察的。details
是可观察的数组。我知道我每次都需要使用firstName和lastName,但是我不能在第二个实例中添加lastName,直到它在第一个实例中起作用。我不确定让lastName成为一个可观察的对象会有多好,因为我只是想把一个值推到它里面。