2

タイトルとコンテンツの 2 つのプロパティを持つモデルがあり、やりたいことは次のとおりです。

タイトルに値がある場合はそれを使用しますが、空白の場合はコンテンツの最初の 20 文字 + "..." を使用します。

これはモデルです:

       function Note(title, content) {
        var self = this;

        self.content = ko.observable(content);
        self.title = ko.computed({
          read: function(){
            if(!title){
              var content = self.content();
              if(content) return content.substring(0,19) + "...";
            }
          },
          write: function(title){
           return title;
          }
        });
       }

タイトルの値はコンテンツから正しく更新されますが、タイトルに直接書き込むことは (私にとって) 不可能です..

RP Niemeyer の回答の唯一の問題は、読み取り/書き込み用のプロパティのみを持っている必要があることです。それは可能ですか?

4

1 に答える 1

10

書き込み可能な計算されたオブザーバブルを作成するときは、実際のタイトルを含めるために別のオブザーバブルが必要になります。

もっと好き:

function Note(title, content) {
    var self = this;

    self.content = ko.observable(content);
    self.title = ko.observable(title);

    self.displayTitle = ko.computed({
        read: function() {
            var title = self.title();
            if (!title) {
                var content = self.content();
                if (content) return content.substring(0, 19) + "...";
            }

            return title;
        },
        write: self.title
    });
}​
于 2012-04-25T22:00:08.900 に答える