Knockout属性绑定不适用于自定义函数

时间:2014-02-23 12:24:48

标签: data-binding knockout.js

我有一个淘汰模型,里面有一个bar元素,我有一个自定义函数foo(),它不在模型中,用于格式化数据。

当我使用类似的东西将模型绑定到html视图时:

<span data-bind="text: foo(bar), attr: { 'title': foo(bar)}"></span>

它只能部分工作:文本被格式化,但属性标题被忽略(没有错误上升,只是被忽略)。但是当我使用:

<span data-bind="text: foo(bar), attr: { 'title': bar}"></span>

标题输出为'bar'。所以基本上自定义函数不能使用属性绑定。

那么有没有办法让foo(bar)正常工作?

P.S。这是一个可重现的代码:

HTML视图

<span data-bind="foreach: listOfReports">
    <div class="10">
        <span data-bind="text: Helper.timestamp2HumanReadable(date), attr: { 'title': Helper.timestamp2Date(date)}"></span>
    </div>
</span>

视图模型

function ArticlesViewModel() {
    this.listOfReports      = ko.observableArray([{'date' : 1283364108}, {'date' : 1893364108}]);
};
ko.applyBindings(new ArticlesViewModel());

当我开始编写代码以使其可重现时,我发现我在Helper中的函数中没有返回正确的值。

对不起你们所有人这篇文章以及浪费你的时间。我希望下次我永远不会这样做。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果barko.observable,那么您需要做的就是:

<span data-bind="text: foo(bar()), attr: { 'title': foo(bar())}"></span>

如果bar不是ko.observable,那么您的代码应该有效。