Skip to content

Commit 3ec4338

Browse files
committed
The dom binding handler copes with a list of nodes.
The programming extension gives a list of HTML nodes for each image produced in feedback.
1 parent b4db773 commit 3ec4338

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

themes/default/files/scripts/knockout-handlers.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,21 @@ Numbas.queueScript('knockout-handlers', ['display-util', 'display-base', 'answer
7777
}
7878
Knockout.bindingHandlers.dom = {
7979
update: function(element, valueAccessor) {
80-
var html = Knockout.utils.unwrapObservable(valueAccessor());
80+
var nodes = Knockout.utils.unwrapObservable(valueAccessor());
8181
element.innerHTML = '';
82-
if(typeof html == 'string') {
83-
element.innerHTML = html;
84-
} else {
85-
element.append(html);
82+
if(!Array.isArray(nodes)) {
83+
nodes = [nodes];
84+
}
85+
for(let node of nodes) {
86+
if(typeof node == 'string') {
87+
const span = document.createElement('span');
88+
span.innerHTML = node;
89+
for(let subnode of span.children) {
90+
element.append(subnode);
91+
}
92+
} else {
93+
element.append(node);
94+
}
8695
}
8796
}
8897
}

0 commit comments

Comments
 (0)