確かに、ノックアウト オブザーバブルに関数を手動でサブスクライブすることで、これを行うことができます。ビュー モデルは次のようになります。
var myModel = function(){
var self = this;
self.buildItems = ko.observable(false);//for the yes/no
self.items = ko.observableArray();
//ask knockout to run this function when the buildItems observable value changes
self.subscription = this.buildItems.subscribe(function(newValue){
if(newValue == 'true'){
//modify the items observableArray so that the UI is updated
var newItems = [{name:'item1'},{name:'item2'}];
self.items(newItems);
}
});
};
var model = new myModel();
テンプレートは次のようになります。
<div id="bindContainer">
<select data-bind="value: buildItems">
<option value="false">No</option>
<option value="true">Yes</option>
</select>
<ul data-bind="foreach: items">
<li data-bind="text: name"></li>
</ul>
</div>
このアプローチのフィドルは次のとおりです。http://jsfiddle.net/vmebt/