Knockout.js 在敲除中获取所选单选按钮的值

Knockout.js 在敲除中获取所选单选按钮的值,knockout.js,Knockout.js,我有三个单选按钮: <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: IsPerCentOrDoll

我有三个单选按钮:

<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>
viewmodel:

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");
    };
我已将折扣级别的默认值设置为1。 无论单击哪个单选按钮,此选项都保持不变

所以我想要的是点击radiobutton的值,以获得折扣

有什么线索和建议吗?

试着这样做:

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);
    });
};

在你的情况下,我认为它可能看起来像:

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();
    });
};
如果您还想查看Begging的第一个单选按钮(对我来说很有逻辑),或者:

如果你不想那样做


每次IsPerCentOrDollar更改时,这将为IsPerCentOrDollar的值设置折扣级别。

给出此错误:未捕获类型错误:无法读取未定义的属性“subscribe”这可能不是self.IsPerCentOrDollar,而是self优惠券.IsPerCentOrDollar哪里声明了self?原因a i see self.IsPerCentOrDollar=ko.observable();不认为自我需要被宣布,不?
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);
    });