簡體   English   中英

淘汰賽JS-將函數名稱與數組值連接

[英]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具有通話功能的dayOfWeekschedule模型,是不是我想要的。 我嘗試執行以下操作:

視圖

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM