为什么字符串数组在骨干中的字符串数组中转换

时间:2014-11-16 15:34:20

标签: javascript backbone.js

我正在尝试使用wordpress中的骨干服务,这需要获取一个网址,并从网址获取此值:

["C:\\wamp\\www\\wordpress\/wp-content\/uploads",
"C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014",
"C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/07",
"C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/08",
"C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/10",
"C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/11",
"C:\\wamp\\www\\wordpress\/wp-content\/uploads\/woocommerce_uploads"]

我将这些信息存储在一个集合中,但问题是主干将每一个放入模型中(在这部分中很好)但是如果我要求每个模型的值,我会得到类似的东西

0:"c"
1:":"
2:"/"
.
.

我不知道为什么会发生这种情况以及如何修复,你们中的任何人都知道这个问题的原因吗?和解决方案?

这是我的收藏品

var CCUFFolder= Backbone.Collection.extend({
    url:ajaxurl
});

获取

cCUFFolder.fetch({type:'POST',data:{action: "cuf_get_dirs"}});

2 个答案:

答案 0 :(得分:0)

Backbone的Model类型本质上是对象文字的包装器。当你从字符串构造你的模型时,Backbone通过解析每个字符串的键/值对来创建每个模型的attributes哈希 - 这产生了一个字符数组。你想要做的是从对象文字构建你的模型:

var collection_source = [
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads" },
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014" },
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/07" },
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/08" },
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/10" },
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads\/2014\/11" },
    { "Path": "C:\\wamp\\www\\wordpress\/wp-content\/uploads\/woocommerce_uploads" }    
];

var folder = new CCUFFolder(collection_source);

console.log(folder.first().get('Path'));

答案 1 :(得分:0)

您应该在集合中实施parse方法:

var CCUFFolder= Backbone.Collection.extend({
    url: ajaxurl,

    parse: function (response) {
        return _.map(response, function (item) {
            return { path: item }
        });
    }
});

之后,您可以正确检索模型:

cCUFFolder.each(function (model) {
   console.log(model.get('path');
});