首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个项目的敲除调用函数

每个项目的敲除调用函数
EN

Stack Overflow用户
提问于 2016-12-16 18:09:28
回答 1查看 1.5K关注 0票数 0

我有这个:

代码语言:javascript
复制
function viewModel() {
        this.items = ko.observableArray(initialData);
    }

ko.applyBindings(viewModel());

...and这个:

代码语言:javascript
复制
<div data-bind="foreach:  items">
 <span data-bind="text: cutOff($data)"></span>
</div>

问题:我有多个专栏。对于注释列,我需要一个函数,为每个项显示一个前40个字符的子字符串和:(.)以显示文本已被切断。我试过用一个计算函数。不走运。

我需要这样的东西:

代码语言:javascript
复制
var cutOff= function (fieldName) {
            if (fieldName.Length > 40)
                return fieldName.substring(0, 40) + "(...)"
            else
                return fieldName;
}

正确的语法对我来说仍然是个谜。这件事可以做吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-12-16 19:22:58

假设cutOff函数是在viewModel中定义的,如下所示。

代码语言:javascript
复制
function viewModel() {
        this.items = ko.observableArray(initialData);

        this.cutOff= function (fieldName) {
            if (fieldName.Length > 40)
                return fieldName.substring(0, 40) + "(...)"
            else
                return fieldName;

         }

    }

您需要通过bindingContext.访问cutOff函数。因此,在HTML页面中,代码应该类似于。在foreach循环中,span元素的绑定上下文将是单个项或$data。如果需要访问在ViewModel中定义的函数,则需要更改绑定上下文,$parent允许访问父上下文。

代码语言:javascript
复制
<div data-bind="foreach:  items">
 <span data-bind="text: $parent.cutOff($data)"></span>
</div>

更新:给出一个未定义的错误是因为您没有创建viewModel实例。如果您没有创建一个实例,则调用viewModel()、返回未定义和未定义的viewModel函数不包含任何类似cutOff的方法。

因此,您需要像下面所示的那样替换代码,然后它就可以工作了。

代码语言:javascript
复制
ko.applyBindings(new viewModel());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41190095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档