Javascript 不创建属性的敲除

Javascript 不创建属性的敲除,javascript,knockout.js,knockout-3.0,Javascript,Knockout.js,Knockout 3.0,我有个小问题。 我的小提琴是 JS var helloVm = function() { var vm=this; vm.obj1=ko.observable({}); vm.obj2=ko.observable({}); vm.test = function() { alert("fffff"); alert("Obj 1 name is "+vm.obj1().name); alert("Obj 2

我有个小问题。 我的小提琴是

JS

var helloVm = function()
{
    var vm=this;
    vm.obj1=ko.observable({});
    vm.obj2=ko.observable({});
    vm.test = function()
    {
        alert("fffff");
        alert("Obj 1 name is "+vm.obj1().name); 
        alert("Obj 2 name is "+vm.obj2().name); 
    };

};
ko.applyBindings(new helloVm(), document.getElementById('foo'));
HTML

<div id="foo">
    <div>
        <input type="text" data-bind="value:obj1().name" />
    </div>
    <div data-bind="with:obj2()" style="margin-top:2px">
        <input type="text" data-bind="value:name" />
    </div>
    <button data-bind="click:test">Test</button>
</div>
<div id="foo">
    <div>
        <input type="text" data-bind="value: obj1().name" />
    </div>
    <div data-bind="with:obj2()" style="margin-top:2px">
        <input type="text" data-bind="value:name" />
    </div>
    <button data-bind="click:test">Test</button>
</div>

试验
第一种情况是直接绑定到对象的不存在属性 第二种情况是通过“with”绑定到对象的不存在属性

在第二种情况下(使用“with”)敲除不会在对象中创建属性。 但它将在第一种情况下创建

我有什么问题?

这里有一个问题

我希望这就是你想要的

HTML

<div id="foo">
    <div>
        <input type="text" data-bind="value:obj1().name" />
    </div>
    <div data-bind="with:obj2()" style="margin-top:2px">
        <input type="text" data-bind="value:name" />
    </div>
    <button data-bind="click:test">Test</button>
</div>
<div id="foo">
    <div>
        <input type="text" data-bind="value: obj1().name" />
    </div>
    <div data-bind="with:obj2()" style="margin-top:2px">
        <input type="text" data-bind="value:name" />
    </div>
    <button data-bind="click:test">Test</button>
</div>
这是一个

我希望这就是你想要的

HTML

<div id="foo">
    <div>
        <input type="text" data-bind="value:obj1().name" />
    </div>
    <div data-bind="with:obj2()" style="margin-top:2px">
        <input type="text" data-bind="value:name" />
    </div>
    <button data-bind="click:test">Test</button>
</div>
<div id="foo">
    <div>
        <input type="text" data-bind="value: obj1().name" />
    </div>
    <div data-bind="with:obj2()" style="margin-top:2px">
        <input type="text" data-bind="value:name" />
    </div>
    <button data-bind="click:test">Test</button>
</div>

我想通过敲除在对象中自动创建属性。我承认,如果我不使用“with”,它会正常工作。但是如果我用“with”关键字allfails@takayoshi您可以编写自定义绑定处理程序来创建属性,但标准处理程序不能。我想通过敲除自动在对象中创建属性。我承认,如果我不使用“with”,它会正常工作。但是如果我用“with”关键字allfails@takayoshi您可以编写一个自定义绑定处理程序来创建属性,但标准处理程序不能。难道您不能像下面这样初始化属性吗
vm.obj1=ko.observable({name:'})?您不能像下面这样初始化属性吗
vm.obj1=ko.observable({name:''})