首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用可剔除的可观测数组更新特定的表列

如何使用可剔除的可观测数组更新特定的表列
EN

Stack Overflow用户
提问于 2013-11-09 02:34:11
回答 1查看 1.2K关注 0票数 1

我有一个简单的ko可观察的客户对象数组。视图中有一个简单的foreach数据绑定,使用table/tr/ the元素。customer对象的一个属性是一个"notes“字段,它可以包含多达1000个字符。

当视图第一次加载时,我将"notes“属性的text属性绑定到一个函数,该函数以”.“返回注释的前100个字符。以表明如果适用的话还有更多的文本。

如果用户单击复选框以“查看完整备注”,我希望刷新notes列,但这一次我不对其进行子字符串,而是显示整个值。如何让KO重新评估foreach,具体来说,我可以刷新notes列吗?

在此过程中,实际可观察到的数组值根本没有变化,只是显示正在改变。

(如果重要的话使用durandal2.0框架)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-09 07:52:00

可以使用可观察到的计算值来完成这一任务,如以下所示( http://jsfiddle.net/MA8Mu/2/):

html:

代码语言:javascript
复制
showFullNotes: <input type="checkbox" data-bind="checked:showFullNotes" /><br />
<table>
    <tbody data-bind="foreach:customers">
        <tr>
            <td>
                <span data-bind="text:actualNotes"></span>
            </td>
        </tr>
    </tbody>
</table>

联署材料:

代码语言:javascript
复制
var Customer = function(notes, parent ){
    var self = this;
    self.notes = ko.observable(notes);

    self.actualNotes = ko.computed(function() {
        if (parent.showFullNotes()){
            return self.notes();
        } else {
            return self.notes().substring(0,5) + "...";
        }
    }, self);
} 


var VM = function(){
    var self = this;
    self.showFullNotes = ko.observable(false);
    self.customers = ko.observableArray(
        [new Customer("123456789", self),
        new Customer("abcderfgh", self)]
    );
}

var vm = new VM();
    ko.applyBindings(vm);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19871746

复制
相关文章

相似问题

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