KnockoutJS,与2D阵列的样式绑定?

时间:2016-03-22 22:33:07

标签: javascript knockout.js data-binding

所以我正在使用CSS属性/ div的JSON对象,例如:

"#myDiv": {
    "position": "absolute",
    "max-height": "225px"
  },

我使用KnockoutJS的样式绑定将此对象绑定到div:

<!-- ko with: $root.Styles['#myDiv'] -->
     <div data-bind="style:{
         position: position,
         maxHeight: $data['max-height']
       }"></div>
<!-- /ko -->

位置绑定正常,并且不必显式访问的任何其他属性也可以。是否可以在KnockoutJS样式绑定中绑定类似 $ data [&#39; max-height&#39;] 的内容?

*我还要注意,我可以成功将 $ data [&#39; max-height&#39;] 绑定到文本字段,但它始终会失败绑定样式时出现语法错误。

思考? :)

更新

对于仍然遇到此问题的人,我默认使用VS 2015并包含浏览器链接。禁用此功能会删除所有语法错误。将其添加到您的web.config:

<appSettings>
<add key="vs:EnableBrowserLink" value="false" />
</appSettings>

再次感谢@Jeroen指出错误不是由KO造成的。

1 个答案:

答案 0 :(得分:0)

您发布的代码应该可以正常使用以下样式:

&#13;
&#13;
ko.applyBindings({
  Styles: {
    "#myDiv": {
      "position": "absolute",
      "max-height": "225px"
    }
  }
});
&#13;
div {
  background-color: pink;  /* to demo "max-height" is working... */
  font-size: 80px; /* to demo "max-height" is working... */
  top: 50px; /* to demo "position" is working... */
  left: 50px; /* to demo "position" is working... */
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>

<!-- ko with: $root.Styles['#myDiv'] -->
<div data-bind="style:{
         position: position,
         maxHeight: $data['max-height']
       }">X
  <br>X
  <br>X
  <br>X
  <br>
</div>
<!-- /ko -->
&#13;
&#13;
&#13;

从css的topleft被选中的事实可以看出,这个职位正在发挥作用。

从粉红色的背景中可以看到max-height被拾取,但高度不超过225像素。