我有一个[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供参考。
答案 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,所以你需要告诉它。你也没有正确地遍历数组。