如何提供数据绑定作为字符串或 javascript 对象?

How to provide data-bind as string or javascript object?

我有一个 "options" 绑定下拉列表,如下所示:

<select class="form-control" data-bind="options: baseViewModel.filtersViewModel, optionsCaption: 'Choose...', optionsText: function(self) { return self.Name }, value: baseViewModel.baseFilter(), optionsValue: 'Value', event: { change: function() { console.log('test'); applyFilter(baseViewModel.baseFilter()); return true; } }">
    <option value="">Choose...</option>
    <option value="{'sort':[]}">water group</option>
</select>

我在我的应用程序的各个地方都使用了这个绑定,无论如何要声明数据绑定的全部内容=“contents" 并将其作为字符串或 javascript 对象传入(注入?)?我检查了 preprocessing bindings,但是,我不确定这是否是我要找的。

正如您所建议的,您可以创建一个自定义绑定,它只有一个 preprocess 方法来设置所有其他绑定。例如:

ko.bindingHandlers.filterBinding = {
    preprocess: function(value, name, addBinding) {
        addBinding('options', 'baseViewModel.filtersViewModel');
        addBinding('optionsCaption', '"Choose..."');
        addBinding('optionsText', 'function(self) { return self.Name }');
        // etc.
    }
}