2014-10-17 4 views
0

У меня есть три радиокнопки, как так:Получение значения выбранной кнопки радио в Knockout

<input type="radio" name="IsPerCentOrDollar" value="1" data-bind="checked: IsPerCentOrDollar" /> 
<span>Percentage Amount</span> 

<input type="radio" name="IsPerCentOrDollar" value="2" data-bind="checked: IsPerCentOrDollar" /> 
<span>Dollar Amount</span> 
@Html.TextBoxFor(p => p.DiscountValue, new { @class = "form-control", @data_bind = "value: DiscountValue, valueUpdate: 'afterkeydown', disable: IsPerCentOrDollar() == '3'", @maxlength = "50" }) 
<input type="radio" value="3" class="freeShipping" name="free" data-bind="checked: IsPerCentOrDollar" /> 
<label>Free Shipping</label> 

IsPerCentOrDollar используются для отключения текстового поля, когда выбрана Бесплатная доставка.

self.IsPerCentOrDollar = ko.observable(); 

модель представление:

function CouponViewModel(data) { 
     selfCoupon = this; 
     self.IsPerCentOrDollar = ko.observable(); 

     selfCoupon.discountType = ko.observable(); 
     selfCoupon.Code = ko.observable(data.Code); 
     selfCoupon.DiscountValue = ko.observable(data.DiscountValue); 
     selfCoupon.DiscountLevel = ko.observable("1"); 
    }; 

я установить значение по умолчанию DiscountLevel 1. Это остается независимо от того, который щелкнул кнопку радио.

Так что я хочу, чтобы значение радиобъектива было нажато, чтобы войти в DiscountLevel.

Любые подсказки, предложения?

ответ

0

В вашем случае я думаю, что это может выглядеть так:

function CouponViewModel(data) { 
    selfCoupon = this; 
    self.IsPerCentOrDollar = ko.observable("1"); 

    selfCoupon.discountType = ko.observable(); 
    selfCoupon.Code = ko.observable(data.Code); 
    selfCoupon.DiscountValue = ko.observable(data.DiscountValue); 
    selfCoupon.DiscountLevel = ko.computed(function() { 
     return self.IsPerCentOrDollar(); 
    }); 
}; 

, если вы хотите, чтобы проверить первое радио (на самом деле логично для меня) или просто:

self.IsPerCentOrDollar.subscribe(function(newValue) { 
     selfCoupon.DiscountLevel(newValue); 
    }); 

если вы не хотите этого.

Это установит DiscountLevel для значения IsPerCentOrDollar при каждом изменении IsPerCentOrDollar.

0

попробовать так:

self.IsPerCentOrDollar.subscribe(function(newValue) { 
    selfCoupon.DiscountLevel(newValue); 
}); 

Редактировать

function CouponViewModel(data) { 
    selfCoupon = this; 
    selfCoupon.IsPerCentOrDollar = ko.observable();   

    selfCoupon.discountType = ko.observable(); 
    selfCoupon.Code = ko.observable(data.Code); 
    selfCoupon.DiscountValue = ko.observable(data.DiscountValue); 
    selfCoupon.DiscountLevel = ko.observable("1"); 

    selfCoupon.IsPerCentOrDollar.subscribe(function(newValue) { 
     selfCoupon.DiscountLevel(newValue); 
    }); 
}; 
+0

дает эту ошибку: неперехваченным TypeError: Не удается прочитать свойство «подписаться» на неопределенный – Codehelp

+0

хо это не может быть не self.IsPerCentOrDollar но selfCoupon.IsPerCentOrDollar – Pascalz

+0

изменил его selfCoupon, до сих пор не идти !!! – Codehelp

Смежные вопросы