Javascript KnockoutJS和计算属性不工作

Javascript KnockoutJS和计算属性不工作,javascript,knockout.js,Javascript,Knockout.js,我刚刚开始淘汰此模型和viewmodel: $(function() { // Class to represent a note function Note(title, content) { var self = this; self.title = ko.computed(function() { var title = title; if(title.length > 0) return title; if(self.content &am

我刚刚开始淘汰此模型和viewmodel:

$(function() {

  // Class to represent a note
  function Note(title, content) {
    var self = this;

    self.title = ko.computed(function() {
  var title = title;
  if(title.length > 0) return title;

  if(self.content && self.content.length > 0) return self.content.substring(0,19) + "...";   
    });   

    self.content = ko.observable(content);

  }

  // Overall viewmodel for this screen, along with initial state
  function TaccuinoViewModel() {
    var self = this;

    // Editable data
    self.notes = ko.observableArray([
    ]);

    // Operations
    self.addNote = function() {
        self.notes.push(new Note());
    }
    self.removeNote = function(note) { self.notes.remove(note) }
  }

  ko.applyBindings(new TaccuinoViewModel());

});
问题在于computed属性:我想做的是:

1-)如果标题的长度大于0,则使用它 2-)如果未定义,请使用content+中的前20个字符

但这不起作用


关于以其他方式执行此操作的任何建议?

self.content
是可观察的,因此您需要调用它以获取当前值:

self.content = ko.observable(content);
self.title = ko.computed(function() {
    if(title.length > 0) return title;

    var currentContent = self.content(); // <-- get the current value
    if(currentContent) return currentContent.substring(0,19) + "...";   
});
self.content=ko.可观察(content);
self.title=ko.computed(函数(){
如果(title.length>0)返回title;

var currentContent=self.content();//
self.content
是可观察的,因此需要调用它以获取当前值:

self.content = ko.observable(content);
self.title = ko.computed(function() {
    if(title.length > 0) return title;

    var currentContent = self.content(); // <-- get the current value
    if(currentContent) return currentContent.substring(0,19) + "...";   
});
self.content=ko.可观察(content);
self.title=ko.computed(函数(){
如果(title.length>0)返回title;

var currentContent=self.content();//除了两个问题外,它还可以工作,我更新了问题以更好地解释它…现在谢谢!这种行为很自然-每当你编辑内容时,标题也会更新。你需要更多的技巧才能工作。对于第二个问题:如果你想写入一个计算的可观察对象,你需要指定如何使用内部工作(请参阅)。我恢复了原来的问题(可能对其他人有帮助)-如果您有更多问题,请打开一个新问题。阅读reand并编写,但仍然不起作用:(但我在这里打开了另一个问题,除了2个问题,我已经更新了问题以更好地解释它…现在感谢!这种行为很自然-每当你编辑内容时,标题也会更新。你需要更多的技巧来实现这一点。对于第二个问题:如果你想写一个计算的可观察对象,你将我需要说明如何在内部工作(请参阅)。我恢复了原来的问题(它可能会帮助其他人)-如果您有更多问题,请打开一个新的问题。阅读reand并编写,但仍然不起作用:(但我在这里打开了另一个问题