【发布时间】:2016-09-26 00:02:18
【问题描述】:
我在 C# 文件后面的 ASP.NET 代码中创建复选框。我在将控件添加到页面之前添加了一个属性值,因此 ASP 正在将该属性添加到复选框和文本标签周围的跨度中。它看起来像这样:
<span data-bind="visible: showCheckBox(this)">
<input id="" type="checkbox" name="ctl00$MainContent$SecondaryForm$ctl00" value="1">
<label for="">Outside Source</label>
</span>
我有一个用 Knockout.js 编写的名为 showCheckBox() 的函数。它根据紧接其前面的下拉列表中所选项目的值确定是否应显示目标复选框。例如,如果下拉列表中选定项的值为 1,则对应值为 1 的目标复选框将可见。该函数如下所示:
function showCheckBox(span) {
var value = span.firstChild.value;
return value == reason();
}
reason() 是视图模型变量,它保存所选下拉列表项的值。
无论我做什么,我都无法正确发送复选框的值。它始终是未定义的。
【问题讨论】:
-
对不起,我有点困惑。你到底在纠结哪个价值观?
span.firstChild未定义?还是span.firstChild.value?span究竟是什么 DOM 对象? -
也许我很遥远,但我正在使用“this”关键字将 span DOM 元素发送到函数。然后我尝试提取复选框的值并返回它与 reason() 视图模型变量的比较结果
-
我对knockout不是很熟悉,但是你调试过这段代码吗?我不完全确定
span是你所期望的 -
你能在 plnkr 中说明问题吗?尝试记录传入的跨度变量。
标签: javascript c# asp.net knockout.js