Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除-变量值包含函数体_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除-变量值包含函数体

Javascript 敲除-变量值包含函数体,javascript,knockout.js,Javascript,Knockout.js,当我试图访问新创建的元素的值时,我得到函数体作为变量值 在 单击添加名称 在新添加的行中输入姓Kate。 单击“显示所有名称”按钮。 在弹出窗口中,将显示函数体而不是Kate。我可以使用name.FirstName使用第一个元素,使用name.FirstName使用其余元素 在这个场景中,在循环迭代中是否有一致的方法来获取firstname的值 我的HTML代码是: <table> <tbody data-bind="foreach: names">

当我试图访问新创建的元素的值时,我得到函数体作为变量值

单击添加名称 在新添加的行中输入姓Kate。 单击“显示所有名称”按钮。 在弹出窗口中,将显示函数体而不是Kate。我可以使用name.FirstName使用第一个元素,使用name.FirstName使用其余元素

在这个场景中,在循环迭代中是否有一致的方法来获取firstname的值

我的HTML代码是:

    <table>
    <tbody data-bind="foreach: names">
        <tr>
            <td>
                <label>First Name:</label>
            </td>
            <td>
                <input data-bind="value: FirstName" type="text">
            </td>
            <td>
                <label>Last Name:</label>
            </td>
            <td>
                <input data-bind="value: LastName" type="text">
            </td>
        </tr>
    </tbody>
</table>
<button data-bind="click: addName">Add Name</button>
<button data-bind="click: showAllNames">Show All Names</button>
FirstName和lastName字段应该是可观察的,因为您可以通过UI进行更改

因此,您需要将这些转化为ko.observatives,如下所示:

var namesArray = [{
    "FirstName": ko.observable("Tom"),
    "LastName": ko.observable("Langdon")
}];
现在项目将只有可观察的。这就是您需要更改showAllNames函数的原因:

ko.utils.arrayForEach(self.names(), function (name) {
    namestring += name.FirstName() + "\n";
});

您还可以使用函数自动将原始js对象转换为可观察对象

优秀答案。正是我想要的!!。现在,我明白了,我可以在JSON本身中声明可观察对象。
ko.utils.arrayForEach(self.names(), function (name) {
    namestring += name.FirstName() + "\n";
});