代码之家  ›  专栏  ›  技术社区  ›  Leron

当css绑定的属性为null时,使用默认类进行KnockoutJS绑定

  •  0
  • Leron  · 技术社区  · 7 年前

    我正在从事一个现有的项目,我还在学习KnockoutJS,所以可能我无法提供完整的描述,但情况就是这样。

    我有一个 <div> 元素,如下所示:

    '<div data-bind="text: CSS || \'Default text\', css: CSS || \'default-css\'" class="some-classes"></div>'
    

    我想要什么 CSS 属性为 Null 要应用 css 与这种情况下的默认类绑定。由于用例是这样的,以后我希望能够更改绑定 css 属性设置为其他值。

    发生了什么

    我有一个函数,当我需要重新绑定 <div>

    function RebindDiv(data, event) {
      var element = $(event.currentTarget).parent().prev('.<selector>').get(0);
      ko.applyBindingsToNode(element, { text: data.CSS(), css: data.CSS() });
    
      $(function () { $(element).change() }); //triggers the KO binding
    }
    

    因此,当事件被触发时,如果最初我已绑定 css <div> 像这样: css: CSS || \'default-css\" 然后 default-css 在呈现页面时不应用,但在触发事件后,css成功应用。如果我删除 || 只检查并离开 css: CSS 然后添加默认css,如下所示: class="default-css, <other classes>" 然后,当呈现页面时,会应用该类(这并不奇怪),但每次都不会应用新样式,总的来说,这似乎不是正确的方法。

    问题 有没有办法保持KO的 css 如果在开始时未设置属性,是否仍使用默认类?

    0 回复  |  直到 7 年前