2012-04-25 19 views
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ニーマイヤーの唯一の問題答えは、私は読み書きのためだけに財産を持っていなければならないということです、それは可能ですか?

答えて

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 
    }); 
}​ 
+0

申し訳ありませんが、私は/表示するようにプロパティを1つでない2つの書き込み必要、ということは可能ですか? –

+2

あなたの正確な要件についてはわかりませんが、1つのプロパティがあるように見えるようにする方法はいくつかあります。ここでは、実際の観測がプライベートであるものがあります:http://jsfiddle.net/rniemeyer/LFzzq/。ここでは、表示のためにサブ観測可能なものを使用するものがあります:http://jsfiddle.net/rniemeyer/LFzzq/3/これはJSONに変換してサーバーに返すときに自然に落ちます。 –

+0

私の問題は、contentEditable = "true"のdivを使うつもりで、入力も出力なので、タイトルが変更される可能性があるのでobservableでも計算されたプロパティでもない可能性があります –

関連する問題