javascript - 编辑不适用于新添加的数据 - knockout

标签 javascript jquery knockout.js

我一直在关注一些教程并尝试遵循 knockout.js。我无法编辑任何新添加的数据。

我的 JS 代码:

var data = [
new ListData("Programmer", 1),
new ListData("Testing", 2),
new ListData("DBA", 3),
new ListData("Lead", 4),
new ListData("Manager", 5)
];


function ListData(desig, id) {
    return {
        Desig: ko.observable(desig),
        Id: ko.observable(id)

    };
}
var viewModel = {
    list: ko.observableArray(data),
    dataToAdd: ko.observable(""),
    selectedData: ko.observable(null),

    addTag: function () {
        this.list.push({ Desig: this.dataToAdd() });
        this.tagToAdd("");
    },

    selecData: function () {
        viewModel.selectedData(this);
    }
};

$(document).on("click", ".editData", function () {
});

ko.applyBindings(viewModel);

我的查看代码:

    <input type="text" data-bind="value:   dataToAdd" />
    <button data-bind="click: addData">
        + Add
    </button>
    <ul data-bind="foreach: list">
        <li data-bind="click: $parent.selecData">
            <span data-bind="text: Desig"></span>
            <div>
                <a href="#" class="editData">Edit</a> 
            </div>
        </li>
    </ul>
<div id="EditData" data-bind="with: selectedData">
    Designation:
    <input type="text" data-bind="value: Desig" />
</div>

我能够编辑已经存在的数据,例如程序员、测试、DBA...但是如果我添加新数据..我将无法编辑。请帮忙。

最佳答案

您的 addData (您在代码中将其命名为 addTag,但在 HTML 中调用 addData)函数不会构造新元素与您最初创建数据的方式相同。注意:由于您的 ListData 构造函数显式返回一个对象,因此 new 是多余的。

addData: function () {
    this.list.push(ListData(this.dataToAdd(), ""));
},

关于javascript - 编辑不适用于新添加的数据 - knockout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906809/

相关文章:

javascript - 如何将关闭事件绑定(bind)到 window.open()

jquery - 如何隐藏 jwysiwyg 上的默认控件?

jQuery - 等待函数返回值

android - 滞后滑动性能

javascript - 序列化 knockout View 模型,想法?

javascript - 未捕获的类型错误 : Object #<Object> has no method '_isNullOrUndefined'

javascript - 如何使用 jQuery/Ajax 设置图像的黄色和白色亮度?

javascript - 在 JQuery 选项卡中动态加载 DataTables

javascript - col可调整大小的行显示 :none; and the custom anchors relating to the row to have a display:none;

javascript - knockout js中如何设置dropdown的初始默认值