javascript - 如何在正确的上下文中引用 Knockout.js 对象和对象数组

标签 javascript jquery knockout.js

我似乎无法正确理解:http://jsfiddle.net/dPyQy/4/

我想收集我在输入字段中输入的标签以进行保存。我需要将 Textbatches 引用为 SelectedText,就像在 RL 中一样,我需要能够在 Textbatches 中进行选择。

var Textbatch = function (data,tags) {
    var self = this;

    self.TextbatchId = data.TextbatchId;
    self.Title = ko.observable(data.Title);
    self.Text = ko.observable(data.Text);
    self.TextTags = ko.observableArray(tags);

    function createTypeComputed(tagType) {
        return ko.computed(function () {
            return ko.utils.arrayFilter(self.TextTags(), function (item) {
                return item.Type() == tagType;
            });
        });
   }

   self.managerTags = createTypeComputed(0);

   self.removeTag = function (tagToRemove) {
       self.TextTags.remove(function (item) {
           return item.Id == tagToRemove.Id;
       });
   }
}

与环境、物体和一切事物作斗争。我希望在输入字段下方列出所选标签,然后进行调试以显示更新的对象。

非常感谢任何帮助。谢谢。

最佳答案

managerTags 计算结果为数组,但您在 text 绑定(bind)中使用它,该绑定(bind)期望它计算结果为字符串。

你想如何显示它?作为 HTML 列表(使用 foreach 绑定(bind)来循环标记),还是作为逗号(或其他内容)分隔的字符串(在其上使用 join)?

要获取逗号分隔的字符串,请将 createTypeCompulated 更改为

function createTypeComputed(tagType) {
  return ko.computed(function () {
    return ko.utils.arrayMap(      
      ko.utils.arrayFilter(self.TextTags(), function (item) {
         return item.Type() == tagType;
      }),
      function (item) {
        return item.Name();
      }).join(',');
    });
}

请注意,如果您可以使用 ES5 浏览器(除了 IE<9 之外的任何浏览器),您可以简化计算的函数

    return self.TextTags().filter(function (item) {
        return item.Type() == tagType;
      })
      .map(function (item) {
        return item.Name();
      })
      .join(',');

关于javascript - 如何在正确的上下文中引用 Knockout.js 对象和对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069163/

相关文章:

javascript - 使用 HTML 和 JavaScript 显示 JSON 信息

从链接执行 html 时,JavaScript 在 html 中不起作用

javascript - 自动播放用 javascript 创建的 html 音频

jquery - 找出元素的高度必须正确设置最大高度的动画

javascript - knockout 简单绑定(bind)不起作用

javascript - js如何删除数组中具有共同值的对象?

jQuery fadeOut 将不透明度设置为 1

javascript - 使用 jquery 更改链接中的 html 文本

javascript - Durandal knockout 阵列未定义

javascript - Knockout.js 性能 - 有多少可观察值?