这是我第一次使用Knockout.js。
我不明白为什么会遇到这个问题。
未捕获错误:无法解析绑定。 消息:ReferenceError:未定义DataPrevista; 绑定值:值:DataPrevista,namePath:true
我希望有人帮助我。
这是我的代码:
查看
<div>
@Html.LabelFor(model => model.Cliente)
</div>
<div>
@Html.DropDownListFor(model => model.Cliente.Codigo, new SelectList(Model.ClientesSelecionaveis, "Value", "Text", Model.Cliente), new { @class = "form-control" })
</div>
<div>
@Html.LabelFor(model => model.Funcionario)
</div>
<div>
@Html.DropDownListFor(model => model.Funcionario.Codigo, new SelectList(Model.FuncionariosSelecionaveis, "Value", "Text", Model.Cliente), new { @class = "form-control" })
</div>
<fieldset>
<div style="margin:30px 0;">
<input type="button" value="Adicionar Agendamento" data-bind="click: addAgendamento" class="btn btn-success" />
<input type="button" value="Remover Agendamento" data-bind="click: removeAgendamento" class="btn btn-danger" />
</div>
<h4 class="page-header">Agendamentos</h4>
@Html.EditorFor(model => model.Agendamentos)
</fieldset>
<p style="margin:30px 0;">
<input type="submit" value="Enviar" class="btn btn-info" />
@Html.ActionLink("Listar", "Index")
</p>
编辑模板
<div>
@Html.LabelFor(model => model.DataPrevista)
</div>
<div>
@Html.TextBoxFor(model => model.DataPrevista, new { @class = "form-control", data_bind = "value: dataPrevista, namePath: true" })
</div>
<div>
@Html.LabelFor(model => model.InicioPrevisto)
</div>
<div>
@Html.TextBoxFor(model => model.InicioPrevisto, new { @class = "form-control", data_bind = "value: inicioPrevisto, namePath: true" })
</div>
<div>
@Html.LabelFor(model => model.FimPrevisto)
</div>
<div>
@Html.TextBoxFor(model => model.FimPrevisto, new { @class = "form-control", data_bind = "value: fimPrevisto, namePath: true" })
</div>
<div>
@Html.LabelFor(model => model.TrasladoPrevisto)
</div>
<div>
@ Html.TextBoxFor(model => model.TrasladoPrevisto, new { @class = "form-control", data_bind = "value: trasladoPrevisto, namePath: true" })
的Javascript
<script type="text/javascript" language="javascript">
function createViewModel() {
var createAgendamento = function () {
return {
dataPrevista: ko.observable(),
inicioPrevisto: ko.observable(),
fimPrevisto: ko.observable(),
trasladoPrevisto: ko.observable()
};
};
var addAgendamento = function () {
agendamentos.push(createAgendamento());
};
var removeAgendamento = function () {
agendamentos.pop();
};
var cliente = ko.observable();
var funcionario = ko.observable();
var agendamentos = ko.observableArray([createAgendamento()]);
return {
cliente: cliente,
funcionario: funcionario,
agendamentos: agendamentos,
addAgendamento: addAgendamento,
removeAgendamento: removeAgendamento
};
}
$(document).ready(function () {
var viewModel = createViewModel();
ko.applyBindings(viewModel);
});
答案 0 :(得分:1)
您的数据语法似乎不正确。它应该是data-bind
而不是data_bind
请参阅Knockout文档:binding syntax
此外,dataPrevista
是视图模型中的嵌套observable,因此您需要像这样引用它。
data-bind="value: agendamentos.dataPrevista"