Проблема очень тонкая. Это ваш массив:
this.array = [true,false,true,false];
И вы привязываетесь к этому так:
<select disabled.bind="array[$index]">
Вы думаете , что вы привязываетесь к переменной (а именно к массиву), но на самом деле вы привязываетесь к значению в этом индексе массива, которое является буквальным значением true
или false
.
Для индекса 0 привязка фактически такая же:
<select disabled.bind="true">
Буквенные значения, конечно, не могут изменяться - могут только переменные, которые их содержат.
Если вы измените свой массив на что-то вроде этого:
this.array = [{disabled:true},{disabled:false},{disabled:true},{disabled:false}];
И ваша привязка к этому:
<select disabled.bind="array[$index].disabled">
Тогда должно работать.
Примечание:
В целом, в вашем коде есть несколько улучшений, не последним из которых является размещение ваших подписок на противоположном жизненном цикле. Смотрите эту обновленную суть:
https://gist.run/?id=a01425ec61a4dc7c1997408ff92c52a2