gpt4 book ai didi

jquery - 使用 jquery 插入表行后无法绑定(bind)值

转载 作者:行者123 更新时间:2023-12-03 22:41:31 27 4
gpt4 key购买 nike

我的 html 中有这个:

<table class="dataTable" id="CADataTable">
<thead>
<tr>
<th> Type</th>
<th> Name</th>
<th> Adress</th>
<th> ID Number</th>
<th> Contact</th>
<th> Note</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<select name="CAType" id="CAType" data-bind="value: CAType" style="width: 12em;">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</td>
<!-- <td><input type="text" name="CAType" data-bind="value: CAType" style="width: 9em;"></td> -->
<td><input type="text" name="CAName" data-bind="value: CAName" style="width: 15em;"></td>
<td><input type="text" name="CAAdress" data-bind="value: CAAdress" style="width: 15em;"></td>
<td><input type="text" name="CAIdNum" data-bind="value: CAIdNum" style="width: 6em;"></td>
<td><input type="text" name="CAContact" data-bind="value: CAContact" style="width: 10em;"></td>
<td><input type="text" name="CANote" data-bind="value: CANote" style="width: 15em;"></td>
</tr>
</tbody>
</table>
<button type="button" id="export" class="button" data-bind="click: newCreditRows">Add new row</button>

以及knockout js View 模型中的jquery代码,按下按钮时执行:

var clickAdd = 0;
newCreditRows = function(){
clickAdd++;
if(clickAdd<=9){
$('#CADataTable tr:last').after('<tr><td><select name="CAType' +clickAdd+ '" id="CAType' +clickAdd+ '" data-bind="value: CAType' +clickAdd+ '" style="width: 12em;"><option>Съдлъжник</option> <option>Поръчител</option> <option>3то Лице</option> <option>ипотекарни / заложни длъжници</option> </select></td><td><input type="text" name="CAName' +clickAdd+ '" data-bind="value: CAName' +clickAdd+
'" style="width: 15em;"></td><td><input type="text" name="CAAdress' +clickAdd+ '" data-bind="value: CAAdress' +clickAdd+
' " style="width: 15em;"></td><td><input type="text" name="CAIdNum' +clickAdd+ ' " data-bind="value: CAIdNum' +clickAdd+
'" style="width: 6em;"></td><td><input type="text" name="CAContact' +clickAdd+ '" data-bind="value: CAContact' +clickAdd+
' "style="width: 10em;"></td><td><input type="text" name="CANote' +clickAdd+ '" data-bind="value: CANote' +clickAdd+ '" style="width: 15em;"></td></tr>');
}else
alert("Maximum number reached!");
};

一切工作正常,但我注意到 jquery 代码添加的新行无法将值绑定(bind)到 ko.observable() 变量(我已在我的 View 模型,我不会发布它,因为代码会变得很大。)

我的意思是,可观察的 CAAdress1 女巫在我的代码中是这样声明的:'"data-bind="value: CAAdress' +clickAdd 不起作用。

我确信我错过了一些非常小的东西,比如 char 转义,但我对 jquery 和 knockout 仍然太新,所以我无法发现它。

最佳答案

在调用 applyBindings 方法后,您正在将 html 注入(inject)到 dom 中。所以Ko并不知道这些新元素。

看看this fiddle

var CA = function() {
this.CAName = null;
this.CAAdress= null;
this.CAIdNum = null;
this.CAContact = null;
this.CAName = null;
this.CANote= null;
this.CAType = null;
};

var vm = {
newCreditRows : function () {

this.creditRows.push(new CA());
},
creditRows : ko.observableArray()
};


ko.applyBindings(vm);

希望对您有所帮助。

关于jquery - 使用 jquery 插入表行后无法绑定(bind)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com