动态HTML和knockout.js从Ajax请求重新绑定HTML
当knockout.js通过ajax调用设置一个可观察数组时,我的动态html会被重新填充。当这种情况发生时,会重新加载动态HTML,导致其中的init函数执行两次并重新绑定其他所有内容。为什么我的html observable会重新绑定动态html?我会用小提琴,但我有一大堆代码 Ajax回调动态HTML和knockout.js从Ajax请求重新绑定HTML,knockout.js,Knockout.js,当knockout.js通过ajax调用设置一个可观察数组时,我的动态html会被重新填充。当这种情况发生时,会重新加载动态HTML,导致其中的init函数执行两次并重新绑定其他所有内容。为什么我的html observable会重新绑定动态html?我会用小提琴,但我有一大堆代码 Ajax回调 app.viewModel.members.bracket.parts(response.Parts); ko.applyBindings(app.viewModel.members, app.vie
app.viewModel.members.bracket.parts(response.Parts);
ko.applyBindings(app.viewModel.members, app.viewModel.members.container().find('> div:first').get(0));
容器
<div id="container" class="clearfix" data-bind="html: members.html, container: {}">
</div>
<script type="text/javascript">
app.viewModel.members = {
container: ko.observable($('#container')),
html: ko.observable(''),
bracket: {
parts: ko.observableArray([])
}
};
</script>
app.viewModel.members={
容器:ko.可观察($(“#容器”),
html:ko.可观察(“”),
括号:{
零件:ko.observableArray([])
}
};
动态HTML
<div data-bind="with: members.bracket">
<div>
<div id="bracket-wrapper">
<div data-bind="template: { name: partTemplate, foreach: parts }"></div>
</div>
</div>
</div>
<script type="text/html" id="part-template-1">
<div class="bracket-part" data-bind="bracketGameInit: { left: $data.left, top: $data.top, height: $data.height, width: $data.width }, css: { 'reverse-bracket' : $data.reverse }"></div>
</script>
app.members.bracket.init({
pools: @Html.Raw(Model.DivisionPools.ToJSON()),
teams: @Html.Raw(Model.DivisionTeams.ToJSON()),
parts: @Html.Raw(Model.Parts.ToJSON())
});
app.members.bracket.init({
池:@Html.Raw(Model.DivisionPools.ToJSON()),
teams:@Html.Raw(Model.DivisionTeams.ToJSON()),
parts:@Html.Raw(Model.parts.ToJSON())
});
这是由我收到的小费引起的。我将其更新回了更新可观测阵列的旧方法
function populateGameNumbers(gameNumbers) {
viewModel.gameNumbers([]);
var numbers = [];
for (var i = 0; i < gameNumbers; i++) {
numbers.push(i + 1);
}
viewModel.gameNumbers(numbers);
//viewModel.gameNumbers.push.apply(viewModel.gameNumbers, numbers );
}
函数populateGameNumbers(游戏编号){
viewModel.gamenumber([]);
var数=[];
对于(变量i=0;i