淘汰赛风格绑定不工作ie8

时间:2012-11-13 03:47:07

标签: binding internet-explorer-8 knockout.js styles

我正在使用Knockout.js并且我有以下绑定来添加间距(margin-left)。

<div class="editor-field" data-bind="style : { 'margin-left' : ($root.getHierarchyLevel($index()) * 30 + 'px')}">

这适用于IE9和IE8兼容模式。但是当我在Windows XP上运行IE8中的相同代码时,我看不到任何间距。

我创建了一个jsfiddle示例。这在IE9中在blah之前添加间距,但在IE8中没有。

任何想法??

3 个答案:

答案 0 :(得分:5)

来自:http://knockoutjs.com/documentation/style-binding.html

“如果要应用字体权重或文本修饰样式,或任何其他名称不是合法JavaScript标识符的样式(例如,因为它包含连字符),则必须使用JavaScript名称式“。

请改为尝试:

<div class="editor-field" data-bind="style : { 'marginLeft' : ($root.getHierarchyLevel($index()) * 30 + 'px')}">

答案 1 :(得分:2)

对于遇到相同问题的人,我不得不使用css绑定来使其工作。我们也可以直接添加“class”绑定作为attr的一部分。

答案 2 :(得分:0)

不得不改变,因为它在IE8中不起作用

<div data-bind="style: { display: $data.items.isLoading() ? 'flex' : 'none' }">

<div data-bind="css: { 'searchLoaderFlex' :  $data.items.isLoading(), 'searchLoaderGone':  !$data.items.isLoading() }">

<div data-bind="css: $data.items.isLoading() == true ? 'searchLoaderFlex' : 'searchLoaderGone'">