KnockoutJS用单选按钮

时间:2015-11-01 21:37:41

标签: knockout.js knockout-3.2

我有一个对象列表,我循环并为它们创建单选按钮,然后我想存储在一个observable中选择的对象,但我无法弄清楚如何做到这一点。这个小提琴是我试图做的事情的例子:jsfiddle.net/whx96806/,但它不起作用。

 <div data-bind="foreach: items">
<input type="radio" name="test" data-bind="checkedValue: $data, checked: $root.chosenItem" />
<span data-bind="text: itemName"></span>
</div>
<div><p>You have selected: <span data-bind="text:JSON.stringify(chosenItem())"></span></p></div>
<button data-bind="click:print">Print</button>

和js代码:

function ViewModel () {
    items= ko.observableArray([
    { itemName: 'Choice 1' },
    { itemName: 'Choice 2' }
    ]);
    chosenItem= ko.observable();

    print = function () { alert(chosenItem()); };

};

var vm = new ViewModel();
ko.applyBindings(vm);

2 个答案:

答案 0 :(得分:2)

这是小提琴:http://jsfiddle.net/whx96806/1/

请尝试使用此代码段并查看是否有帮助:

var ViewModel = {    
    items : ko.observableArray([
    { itemName: 'Choice 1' },
    { itemName: 'Choice 2' }
    ]),
    chosenItem : ko.observable(),

};

ko.applyBindings(ViewModel);

答案 1 :(得分:0)

问题是我忘了使用&#39;这个&#39;在我的视图模型中,这应该有效:

function ViewModel () {
    this.items= ko.observableArray([
    { itemName: 'Choice 1' },
    { itemName: 'Choice 2' }
    ]);
    this.chosenItem= ko.observable();

    print = function () { alert(chosenItem()); };

};

var vm = new ViewModel();
ko.applyBindings(vm);

继承人:http://jsfiddle.net/whx96806/2/