【问题标题】:knockout.js computed value using mapping plugin - inside an array使用映射插件的 knockout.js 计算值 - 在数组中
【发布时间】:2014-07-02 17:54:46
【问题描述】:

我有以下视图模型(到目前为止):

var TradeViewModel = function (config) {
    var self = this;
    var mapping = {
        'result': {
            'stuff': {
                update: function(options) {
                    return options.data + 'foo!';
                }
            }
        }
    }
    ko.mapping.fromJS(config, mapping, self);
};

我的数据如下所示:

{
  "result": {
    "stuff": [
      {
        "foo": "bar",
        "important": "computeme",
      },
      {
        "foo": "baz",
        "important": "computemetoo",
      }
    ],
    "otherstuff": [
    ]
  }
}

我看到的标准文档涵盖了嵌套关联数组,但对常规数组并没有多说。就我而言,我认为我需要一个函数来迭代“stuff”中的每个项目并计算新值,从而产生“computemefoo!”和“computemetoofoo!”,例如。我是淘汰赛新手,对这个有点迷茫......

jsfiddle: Fiddle with me 基本模型位于路径 /2/ 中,您可以通过递增 /3/、/4/ 等来查看我正在尝试的内容。

【问题讨论】:

  • 按要求添加到帖子中——这是个好主意

标签: knockout.js mapping viewmodel


【解决方案1】:

如果你想更新一个值,你可以在视图模型中添加一个函数。

类似:

self.update = function (x){
    return x() + 'foo!';
}

您可以在 HTML 中使用$root 回调视图模型的根目录。这将导致类似:

<ul data-bind="foreach: result.stuff">
    <li data-bind="text: $root.update(important)"></li>
</ul>

Fiddle

【讨论】:

  • 太棒了。我有一种感觉,我把它弄得太复杂了。
猜你喜欢
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 2016-01-25
  • 2013-01-07
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多