ben aşağıdaki kod parçası var:Nakavt JS - Dizi değeri ile concatenate fonksiyon adı
GÖRÜNÜM: bu bölümünde
<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
çağırmalıdır Adını fonksiyonudur Geçerli dayOfWeek
(bu sabit kod örnekte Friday
- bu belirli günde beklenen şekilde çalışır) schedule
modelinde. Bununla birlikte, schedule
modelinde numaralı dayOfWeek
numaralı çağrı fonksiyonuna sahip olmak istiyorum. Ben aşağıdakileri yaparak çalıştı:
VIEW
checked: $parent.getCurrentDay(dayOfWeek)
MODEL: checked: $parent.schedule().Monday
vb
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;
}
Ama döndü data-bind
sonra bir dizedir
Ben woul d herhangi bir yardım için çok teşekkür ederiz! dayOfWeek
gözlemlenebilir ise (sizin kodda bunun gibi görünmüyor, ama)
data-bind="checked: $parent.schedule()[dayOfWeek]"
veya
data-bind="checked: $parent.schedule()[dayOfWeek()]"
Eğer işaret ettiğimiz gibi: Eğer parantez notasyonu istedikleri gibi
Çok teşekkürler TJ! Bir çekicilik gibi çalışır. Gerçekten de gözlemlenebilir değil, bu yüzden ilk çözüm kullandığım. Cevabınızı birkaç dakika içinde kabul ediyorum :) – Pawel