烘焙或高效淘汰默认/可选观察

时间:2018-03-26 15:05:39

标签: knockout.js

我需要在我的视图模型上设置多个值,这些值可能会也可能没有传递给viewModel构造函数的参数的相应值。

我熟悉jQuery插件默认对象并与传入选项合并,我想知道Knockout中是否存在类似于observable的东西。

以下是一次性的工作,但如果有十几个或更多,我不想为每条信息做这个:

export function viewModel(params) {
    const vm = {};
    vm.messageOne = params.hasOwnProperty('messageOne') ? params.messageOne : 'My default message';
}

1 个答案:

答案 0 :(得分:1)

您可以使用Object.assign合并两者:

function ViewModel(params) {
  // All default properties go here:
  const vm = { messageOne: "My Default Message" };

  // Overwrite properties that are in `params`
  Object.assign(vm, params);

  /* ... */
}

如果你有一组有序的消息,它们应该是一个数组,而不是带有键的对象。

如果您只想将对象转换为具有可观察属性的对象,则可以使用ko.mapping插件