我有以下代码:
查看:
<div class="form-group days-of-week">
<!-- ko foreach: $root.daysOfWeek --> // array of week days
<label class="col-sm-2 control-label" data-bind="text: dayOfWeek"></label> // 'dayOfWeek' being week day name, e.g. Monday, Tuesday etc.
<div class="col-sm-10 description">
<input type="hidden" value="0" data-bind="attr: { name: 'ScheduledRequest[DayOfWeek][' + dayOfWeek + ']' }" />
<input type="checkbox" data-bind="checked: $parent.schedule().Friday, value: 1, attr: { name: 'ScheduledRequest[DayOfWeek][' + dayOfWeek + ']' }" class="form-control" />
</div>
<!-- /ko -->
此部分data-bind
中的data-bind="checked: $parent.schedule().Friday
应调用名称为当前dayOfWeek
的函数(在此硬编码示例中为Friday
- 该函数按此特定的方式工作({1}}模型中的那一天)。但是,schedule
模型中data-bind="checked: $parent.schedule().dayOfWeek
的调用函数dayOfWeek
不是我想要的。我尝试了以下操作:
查看
schedule
MODEL:
checked: $parent.getCurrentDay(dayOfWeek)
}
但是返回的self.getCurrentDay = function(day) {
var dayOfWeek = "";
if(day == 'Monday')
dayOfWeek = '$parent.schedule().Monday';
if(day == 'Tuesday')
dayOfWeek = '$parent.schedule().Tuesday';
if(day == 'Wednesday')
dayOfWeek = '$parent.schedule().Wednesday';
if(day == 'Thursday')
dayOfWeek = '$parent.schedule().Thursday';
if(day == 'Friday')
dayOfWeek = '$parent.schedule().Friday';
if(day == 'Saturday')
dayOfWeek = '$parent.schedule().Saturday';
if(day == 'Sunday')
dayOfWeek = '$parent.schedule().Sunday';
return dayOfWeek;
是一个字符串:data-bind
等等。
我非常感谢任何帮助!
答案 0 :(得分:2)
听起来像是要括号表示法:
data-bind="checked: $parent.schedule()[dayOfWeek]"
或dayOfWeek
是否可观察(它在您的代码中看起来不像,但是)
data-bind="checked: $parent.schedule()[dayOfWeek()]"
正如您所指出的那样,.dayOfWeek
会查找实际名为dayOfWeek
的属性。 [dayOfWeek]
获取变量dayOfWeek
的值(例如,"Friday"
或类似值),然后使用该名称查找属性。