淘汰赛标题不更新可观察

Posted

技术标签:

【中文标题】淘汰赛标题不更新可观察【英文标题】:Knockout title not updating with observable 【发布时间】:2021-09-19 22:50:13 【问题描述】:

我有一个带有函数的淘汰赛绑定,该函数应该根据页面是否处于编辑模式来更新标题。该函数似乎按预期工作,在编辑模式下返回一个空字符串,如果不是,则返回标题。但是,使用开发工具我可以看到由于某种原因标题没有在 html 中更新。任何帮助都会很棒,谢谢。

KO 模板

// View Model
var self = this;
var isEditMode = self.isEditMode;

var myModel = function(data) 
  ko.mapping.fromJS(data, , this);
  var self = this;

  self.getTitle = ko.computed(function() 
    var str = '';

    if (!isEditMode()) 
      str = 'my title';
    
    return str;
  );
;

var mapping = 
  create: function(options) 
    return new myModel(options.data);
  


var model = ko.mapping.fromJS(self.data(), mapping);
ko.applyBindings(model);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<table>
  <tbody data-bind="template:  name: 'myTemplate', foreach: $data "></tbody>
</table>

<script type="text/html" id="myTemplate">
  <tr data-bind="title: setTitle">
    <td>
      <span data-bind: "text: name()"></span>
    </td>
  </tr>
</script>

【问题讨论】:

【参考方案1】:

为什么不直接将 ko.observable 绑定到 span 元素? 喜欢:

self.name = ko.observable('test');

在 HTML 中:

<span data-bind: "text: $data.name"></span>

【讨论】:

以上是关于淘汰赛标题不更新可观察的主要内容,如果未能解决你的问题,请参考以下文章

淘汰赛计算未使用可观察数组进行更新

仅在单击的函数内部而不是在 Type Script 代码的 UI 中更新可淘汰可观察值

淘汰赛,通过自定义绑定修改时未观察到可观察数组

Knockoutjs ,取消可观察更新

淘汰赛可观察格式

可观察数组中的淘汰赛搜索