Skip to content

Commit

Permalink
radio number valued support
Browse files Browse the repository at this point in the history
  • Loading branch information
errorrik committed Nov 29, 2021
1 parent ce6ed8e commit ba37b70
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/view/element-own-attached.js
Expand Up @@ -100,7 +100,7 @@ function xPropOutput(element, bindInfo, data) {
return;

case 'radio':
el.checked && data.set(bindInfo.expr, el.value, {
el.checked && data.set(bindInfo.expr, evalExpr(bindValue.expr, data), {
target: {
node: element,
prop: bindInfo.name
Expand Down
58 changes: 58 additions & 0 deletions test/form-bindx.spec.js
Expand Up @@ -921,6 +921,64 @@ describe("Form TwoWay Binding", function () {

});

it("radio, number valued", function (done) {
var MyComponent = san.defineComponent({
template: '<div>'
+ '<b>{{online}}</b>'
+ '<label><input type="radio" value="{{values[0]}}" checked="{=online=}" name="onliner">errorrik</label>'
+ '<label><input type="radio" value="{{values[1]}}" checked="{=online=}" name="onliner">varsha</label>'
+ '<label><input type="radio" value="{{values[2]}}" checked="{=online=}" name="onliner">firede</label>'
+ '</div>',

initData: function () {
return {
values: [1, 2, 3],
online: 2
};
}
});

var myComponent = new MyComponent();
var wrap = document.createElement('div');
document.body.appendChild(wrap);
myComponent.attach(wrap);

var inputs = wrap.getElementsByTagName('input');
expect(inputs[0].checked).toBe(false);
expect(inputs[1].checked).toBe(true);
expect(inputs[2].checked).toBe(false);
expect(wrap.getElementsByTagName('b')[0].innerHTML.indexOf('2')).toBe(0);


function doneSpec() {
var online = myComponent.data.get('online');
if (online !== 2) {
var bEl = wrap.getElementsByTagName('b')[0];
expect(bEl.innerHTML.indexOf(online) >= 0).toBe(true);
expect(typeof online).toBe('number');


var inputs = wrap.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
expect(input.checked).toBe(online == input.value);
}

done();
myComponent.dispose();
document.body.removeChild(wrap);
return;
}

setTimeout(doneSpec, 500);
}

triggerEvent(inputs[0], 'click');

setTimeout(doneSpec, 500);

});

it("select", function (done) {
var MyComponent = san.defineComponent({
template: '<div>'
Expand Down

0 comments on commit ba37b70

Please sign in to comment.