【问题标题】:I want to know how .map() method in knockout.js is working我想知道 knockout.js 中的 .map() 方法是如何工作的
【发布时间】:2014-04-16 17:56:31
【问题描述】:

在 myVM.js 我有如下代码

this.accountMessages = ko.observableArray();
this.accountMessages.map(data.result, models.AccountMessage);

data.result 具有类似的价值,

"result":[{"sku":"VINU","name":"22 inch Wide LCD Display L2208w","price":"224.5","qty":"1"},{"sku":"NADVB#WW","name":"Elite Model","price":"345.5","qty":"2"},{"sku":"NADVB#WWW","name":"Elite Model Laptop","price":"33.5","qty":"2"}]

在 myModel.js 中,

(function (models) {
    function AccountMessage(data, self) {
        data = data || {};
        this.sku= ko.observable(data.sku);
        this.name= ko.observable(data.name);
        this.price= ko.observable(data.price);
        this.qty = ko.observable(data.qty);
      //some code goes here

    models.AccountMessage = AccountMessage;
}(models = window.hpelite.models));

终于在myPage.gsp中

<tbody data-bind="foreach: accountMessages">    
    <tr>
        <td class="ellipsis" data-bind ="text:sku"></td>
        <td class="ellipsis" data-bind ="text:name"></td>
</tr>
</tbody>

伙计们,这段代码运行良好,所以我想知道上面提到的 .map(arg1,arg2) 是如何工作的。 我在谷歌搜索这种方法,但我没有得到任何东西。谁能详细解释一下这个方法是如何工作的

【问题讨论】:

  • 考虑使用您在 Chrome 中的调试工具来单步调试并查看。
  • kncokout observableArray 不附带map 方法。如果上面列出的代码确实对您有用,则必须使用一些第三方插件。请检查您的依赖关系!或者为 JsFiddle 提供一个可以工作的 repro!

标签: javascript knockout.js knockout-2.0 knockout-mapping-plugin knockout-validation


【解决方案1】:

KnockoutJS 库和核心 JavaScript 库之间可能存在一些混淆。在 JavaScript 中,Array 原型的一种方法是 map。 map 中的第一个参数应该是一个回调函数。可选的第二个参数成为回调的参数。 Mozilla 在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

进行了深入讨论

您展示的代码的作者似乎以一种不同的、可能很棘手的方式使用 map,其中参数顺序似乎颠倒了。也许其他用户可以澄清一下。

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2012-10-16
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多