[英]Knockout JS - concatenate function name with array value
我有以下代碼:
視圖:
<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
-如預期這個特殊的日子,其作品)在該schedule
模型然而,。 data-bind="checked: $parent.schedule().dayOfWeek
具有通話功能的dayOfWeek
在schedule
模型,是不是我想要的。 我嘗試執行以下操作:
視圖
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
是一個字符串: checked: $parent.schedule().Monday
等。
我將不勝感激任何幫助!
聽起來像您想要方括號表示法:
data-bind="checked: $parent.schedule()[dayOfWeek]"
或dayOfWeek
是否可觀察(在代碼中看起來不像,但是)
data-bind="checked: $parent.schedule()[dayOfWeek()]"
正如您所指出的, .dayOfWeek
查找實際上稱為dayOfWeek
的屬性。 [dayOfWeek]
接受變量dayOfWeek
的值(例如, "Friday"
或類似內容),然后使用該名稱查找屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.