Javascript 如果布尔值的绑定计算不正确,则将其剔除
我的视图中有以下内容,使用span显示只读视图,使用输入显示编辑视图Javascript 如果布尔值的绑定计算不正确,则将其剔除,javascript,mvvm,knockout.js,knockout-2.0,Javascript,Mvvm,Knockout.js,Knockout 2.0,我的视图中有以下内容,使用span显示只读视图,使用输入显示编辑视图 <span data-bind="{ ifnot:IsEditing, text:SystemName }"></span> <input type="text" id="SystemName" data-bind="{ if:IsEditing, value:SystemName }" /> 我正在通过JQuery加载值,使用以下方法创建可观察模型: $.ajax({ type:
<span data-bind="{ ifnot:IsEditing, text:SystemName }"></span>
<input type="text" id="SystemName" data-bind="{ if:IsEditing, value:SystemName }" />
我正在通过JQuery加载值,使用以下方法创建可观察模型:
$.ajax({
type: "get",
url: "..",
success: function (d) {
var pList = [];
for (var p = 0, plen = d.Data.length; p < plen; p++) {
var proj = d.Data[p];
var systems = proj.Systems;
var sList = [];
proj = ko.mapping.fromJS(proj);
for (var s = 0, slen = systems.length; s < slen; s++) {
sList.push(ko.mapping.fromJS(systems[s]));
}
proj.Systems = ko.observableArray(sList);
pList.push(proj);
}
window["model"].projects(pList);
},
error: function (e) {
debugger;
alert("An error occurred");
}
});
$.ajax({
键入:“获取”,
网址:“…”,
成功:功能(d){
var-pList=[];
对于(var p=0,plen=d.Data.length;p
加载时,无论何时加载模型并计算此表达式,都会显示两个元素,而不是显示跨度并隐藏输入。当我将其更改为可见绑定时,仅显示范围。当IsEditing的计算结果为false时,为什么输入显示为if绑定?如果您的
IsEditing
是可观察的,则if
绑定应该正确地计算它
但是,if
绑定应该应用于“类似容器”的元素,例如可以有子元素的元素
这篇文章有点让人困惑,并谈到了包含的标记:
但是,if绑定在物理上添加或删除DOM中包含的标记
由于输入
不能有子元素,因此if
无法从输入
中删除任何内容。您需要将输入
包装到div
中,并在那里应用if
,或者您可以使用无容器绑定语法:
<!-- ko if: IsEditing -->
<input type="text" id="SystemName" data-bind="{ value: SystemName }" />
<!-- /ko -->
演示
<!-- ko if: IsEditing -->
<input type="text" id="SystemName" data-bind="{ value: SystemName }" />
<!-- /ko -->