1

アプリケーションに次のビュー モデルがあります。

var DashboardVM = function (serverData) {
    var self = this;
    self.tiles = ko.mapping.fromJS(serverData);
    self.someotherproperties
    ...
};
var tileData = @Html.Raw(Json.Encode(Model.Tiles));
var dashboardVM = new DashboardVM(tileData);
ko.applyBindings(dashboardVM);

の各項目に ko.computed 関数を追加したいと思いますself.tiles。それが可能であることを示唆する例をオンラインでいくつか見ましたが、これを行うための正しい構文を完全に理解することはできません。

4

2 に答える 2

1

serverData が配列の場合、それを行うことができます。ご覧のとおり、タイトルプロパティに基づいてテキストを返すcompという計算プロパティを追加しました。

var DashboardVM = function (serverData) {
    var self = this;
    self.titles = ko.mapping.fromJS(serverData);
    for(var index =  0; index<self.titles().length; index++) {
        var item = self.titles()[index];
        item.comp = ko.computed(function(){
            return 'new' +item.title()
        });
    }
};
//var tileData = @Html.Raw(Json.Encode(Model.Tiles));
var titleData = [{title :'t1'}, {title :'t2'}, {title :'t3'}]
var dashboardVM = new DashboardVM(titleData);
ko.applyBindings(dashboardVM);


<div data-bind="foreach:titles">
    <span data-bind="text:title">
    </span>    
    <span data-bind="text:comp">
    </span>
    <br/>
</div>

フィドルを見る

お役に立てば幸いです。

于 2013-05-16T21:37:16.250 に答える