object对象返回一组值但不返回另一组值

时间:2014-01-21 01:08:38

标签: jquery html knockout.js

我有一个[object Object]返回我想要的值。其他帖子都没有能够帮助我。

我正在开发一个应用程序,它应该采用表单输入并构建html,以便将它们复制并粘贴到一个需要有限html输入的表单中。其目的是允许没有HTML知识的人上传正确的HTML。

我已经将大部分表单按预期工作了。但是我无法在输出部分填充添加设施按钮。表单本身很有效。

<ul data-bind="foreach: amenities"  id="#amenities">
    <li>
        <input data-bind='value: title' /><a href='#' data-bind='click: $parent.removeAmenity'>Delete</a>
    </li>
</ul>
<ul style='font-weight:600;padding:10px;box-shadow:5px 5px grey;border:solid 1px;' data-bind='foreach: amenities'>
    <li style='margin-left:10px;' data-bind='text: title' />
</ul>

迭代并正确显示。但是当我迭代输出时:

something += "</p><hr/><ul style='font-weight:600;padding:10px;box-shadow:5px 5px grey;border:solid 1px;'>";
    something += $.each(self.amenities(), function(){
        return ("<li>" + self.amenities() + "</li>"); 
    });

我得到的只是对象Object作为返回。它不会给我价值。再一次,我已经查看了SO上所有其他对象的Object帖子,但没有一个解决方案适合我。这是jsfiddle供参考。

http://jsfiddle.net/8hydr/3/

2 个答案:

答案 0 :(得分:1)

那是因为你正在用一个字符串连接一个对象。我真的不明白代码中$.each的用法。实际上它没有意义。

如果要为重新调整的数组的每个对象返回li元素的字符串表示形式(通过调用函数),则应使用$.map返回数组,然后你可以join数组的元素并将它们转换为字符串:

//                      [Object, Object, ...]
//                      ^   ^-------^-----^----
//                      |                      |
something += $.map(self.amenities(), function(value) {
    return "<li>" + value.title + "</li>"; 
}).join('');

答案 1 :(得分:0)

尝试更改$.each

    $.each(self.amenities(), function(x){
        something +=  "<li>" + self.amenities()[x].title + "</li>"; 
    });

您获得[对象]的原因是因为您没有告诉它要从数组中的对象中取出哪个属性。你已经将它命名为title,所以你需要告诉它。你也没有正确地遍历数组。

小提琴:http://jsfiddle.net/8hydr/5/