1

我有以下用于 knockout.js 的模板:

        <script type="text/html" id="feed-template">
            <li data-bind="style: { backgroundColor: BackColor, backgroundImage: 'none' }"   >
                <a style="text-shadow: none" href="#" data-bind="click: ItemClicked">
                    <h1 style="WHITE-SPACE: normal; FONT-WEIGHT: bold" data-bind="text: PatientName"></h1>
                    <p style='white-space: normal;' data-bind="text: Description"></p>
                    <p style='white-space: normal;' data-bind="text: FeedEvent"></p>
                    <p style='white-space: normal;' data-bind="text: FeedTimeString"></p>
                    <span class="ui-li-count" data-bind="text: DisplayCount"></span>
                </a>
                <!-- ko if: ShowDelete -->
                    <a style="background: none; text-shadow: none;" href="#ConfirmUnfollowPopup" data-transition="pop" data-rel="popup" data-position-to="window" data-icon="delete" data-role="button"  data-inline="true" data-theme="b" data-bind="click: UnfollowClicked"></a>
                <!-- /ko -->
            </li>
        </script>

该模板使用 foreach: 绑定绑定到纯 JavaScript 对象的 ObservableArray。除 BackColor 外,所有对象属性都正确绑定。BackColor 是一个属性,而不是一个函数,它的值始终是正确的 CSS 颜色(例如,#556677);但是,它只是作为 BackColor 绑定在 DOM 中,而不是它的值。

这个模板和绑定在 knockout.js 2.1 中工作,但我将它迁移到 knockout.js 3.0,它不起作用。

我尝试将一个函数添加到返回 CSS 颜色并绑定到的 javascript 对象中,ShowBackColor()但这会在淘汰赛中产生一个 javascript 错误。

关于正确绑定此背景样式颜色的任何建议?

4

2 回答 2

0

尝试在背景颜色周围加上引号。

data-bind="style: { 'backgroundColor': BackColor, 'backgroundImage': 'none' }"
于 2014-04-10T19:46:04.753 回答
0

您可以使用 attr 绑定作弊。这是一种解决方法,而不是解决方案(我有同样的问题):

data-bind="attr: { style: 'background-color: ' + BackColor() + '; background-image: none' }"
于 2020-05-22T14:03:52.990 回答