0

ノックアウトjsのラジオボタンに問題があります。解決策を見つけるのに今まで何日もかかりました。以下の私のコードを見ることができます:

これは私のhtmlタグです:

<ul data-bind="foreach:services">
<li>
    <input type="radio" data-bind="value:id,checked:$parent.selectedservice" name="burwood" />
    <span data-bind="text: name"></span>
</li>
</ul>
<br /> 
<button data-bind="click:clicksave">Save</button>

次に、これは私のjavascriptです:

var service = function (id, name) {
        var self = this;
        self.id = ko.observable(id);
        self.name = ko.observable(name);
    };

    var model = function () {
        var self = this;
        self.services = ko.observableArray([]);
        self.addservice = function (service) {
            self.services.push(service);
        };
        self.selectedservice = ko.observable();
        self.selectedservice.subscribe(function () {
            alert('call ajax here.');
        }, null, "change");
        self.clicksave = function () {
            alert(self.selectedservice);
        };
    }


        var m = new model();
        m.addservice(new service('1', 'First'));
        m.addservice(new service('2', 'Second'));
        m.addservice(new service('3', 'Third'));
        m.addservice(new service('4', 'Fourth'));
        m.selectedservice = '1';
        ko.applyBindings(m);

コードの実際の動作については、http://jsfiddle.net/johnhadikusumo/jdApu/にアクセスしてください。

基本的に、ユーザーがラジオボタンのリストの選択を変更したときに ajax を呼び出す必要があります。何らかの理由で値が変更されたときに self.selectedservice.subscribe がトリガーされないように思われる場合。

何か助けはありますか?

乾杯

ジョン

4

1 に答える 1

1

これは問題のある行であり、オブザーバブルを削除します。

m.selectedservice = '1';

それを次のように置き換えます。

m.selectedservice('1');

更新されたフィドル: http://jsfiddle.net/jdApu/4/

于 2013-11-06T12:29:07.013 に答える