Hello-
I think that you could do what Mark said. I would probably try to use a manual subscription against the items observableArray and maybe set it up before pushing the values to it.
Another option though would be to create a custom binding that wraps the "options" binding. This helps to make it so your viewModel remains unaware of the UI that is binding against it. So, your UI depends on your viewModel, but not the other way around. The nice thing in the custom binding is that you have access to the element, so you have no need to keep track of the ID or reference it in your viewModel.
The binding could simply look like:
ko.bindingHandlers.jqmOptions = {
update: function(element, valueAccessor, allBindingsAccessor, context) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor,context);
$(element).selectmenu("refresh");
}
}
Now, just replace "options" with "jqmOptions" or whatever you want to call it and you are done.