knockout.js - 如何清除 knockout 中的可观察属性?

标签 knockout.js knockout-mapping-plugin

我有如下的 javascript 代码块和 html。模型对象是通用的。 它是在运行时定义的。

可以这样。

var model = { "xId": ko.observable(0), "xName": ko.observable(null), "Type": ko.observable("x") };
   /* var model = { "yId": ko.observable(0), "yName": ko.observable(null), "Type": ko.observable("y") };
    var model = { "zId": ko.observable(0), "zName": ko.observable(null), "Type": ko.observable("z") };  */

    var vm = function (data) {
        ko.mapping.fromJS(data, {}, this);
    };

    var vm2 = function () {
        var self = this;
        self.New = ko.observable(null);
        self.NewItem = function () {
            console.log(model);
            self.New(new vm(model));
        };
    };

    var viewModel = new vm2();
    ko.applyBindings(viewModel);

    vm.prototype.Save = function () {
        viewModel.New(null);
        /*In here all of inputs must be cleared but How to :)*/
    };

第一个模型的 newForm。

<input type="button" data-bind="click: NewItem" value="Add" />
<div data-bind="with:New" id="newForm">
    <input type="text" data-bind="value:xId" />
    <input type="text" data-bind="value:xName" />
    <input type="text" data-bind="value:Type" />
    <input type="button" data-bind="click: Save" value="Save" />
</div>

我点击添加按钮,然后输入一些内容,然后点击保存按钮。 newForm 是不可见的。到目前为止一切正常。但是我再次点击添加按钮,我写的值仍然在输入中。保存后无法清除 newForm。

编辑:

public class Test{
    public int TestId {get; set;}
    public int TestName {get; set;}
}

public class Test2{
    public int Test2Id {get; set;}
    public int Test2Name {get; set;}
}

实体类的数量不清楚。

我的实体类是转json的。该模型是由 .net 像这样创建的。 我的项目有一个母版页和子页。 对于测试页:

var model = <%=ViewModelCreator.Create<Test>() %>;

对于 test2 页面:

var model = <%=ViewModelCreator.Create<Test2>() %>;

最佳答案

编辑:您的 View 模型有点奇怪,内部模型是对相同可观察对象的静态引用,映射插件将在找到旧可观察对象时重用它们。为什么你甚至要像那样映射到静态定义的可观察对象集合,为什么不直接显式声明你的 View 模型?

旧答案 能做到吗?

for(var index in vm) {
   if(ko.isObservable(vm[index])) {
      vm[index](null);
   }
}

编辑:您还可以创建一个可清除的特殊可观察对象

关于knockout.js - 如何清除 knockout 中的可观察属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13875454/

相关文章:

javascript - knockout 数据绑定(bind)点击

arrays - 具有排序和 Foreach 数据绑定(bind)的 knockout 可观察数组

asp.net-mvc-4 - 将复杂的 View 模型 POST 到 Controller

jquery - 每行 knockout 总值(value)

javascript - 使用映射插件在 KnockoutJS 中扩展 View 模型

knockout.js - 如何删除从 ajax 调用返回的 JSON 生成的 Knockout 映射数组的成员?

javascript - 来自 ajax post 的 knockout 映射数据与静态数据

c# - 使用 Knockoutjs 显示点击的项目

knockout.js - 在嵌套循环中获取祖 parent 的 $index

javascript - 从 Knockoutjs 中的 observablearray 中删除项目