gpt4 book ai didi

javascript - Knockoutjs 单击并编辑字段不更新 observable

转载 作者:行者123 更新时间:2023-11-30 18:30:20 24 4
gpt4 key购买 nike

我正在尝试使用 knockoutjs 来实现一个简单的点击和编辑系统。如果我更改输入焦点,该值似乎会正确更新,但是当我使用按键事件绑定(bind)时,我似乎无法获取要更新的值:http://jsfiddle.net/rxYGz/11/

        function Item(label, value)   
{
this.label = ko.observable(label);
this.value = ko.observable(value);

this.editing = ko.observable(false);

this.editItem = function(e) {
this.editing(true);
}

this.checkEditDone = function(e,f) {

if (e.which == 13)
{
this.editing(false);
}
else
return true;
};

return this;
};

var SimpleViewModel = {

editItem: function(item) {
item.editing(true);
},

templateToUse: function(item) {
return item.editing() ? 'editTmpl' : 'viewTmpl';
},

title : ko.observable(new Item('Request Title', 'EDIT THIS TITLE')),

product_line : ko.observable(new Item('Product Line', 'EDIT THIS LINE'))
};

ko.applyBindings(SimpleViewModel);

绑定(bind):

<ul class='list'>
<div class='header'>Request</div>
<li data-bind="template: {name: templateToUse, data: title}"></li>
<li data-bind="template: {name: templateToUse, data: product_line}"></li>
</ul>

<script id='editTmpl' type='text/html'>
<span data-bind="text: label">&nbsp</span>
<input data-bind="value: value, valueupdate: 'change', hasfocus:editing, event: {keypress: checkEditDone}"/>
</script>

<script id='viewTmpl' type='text/html'>
<span data-bind="text: label">&nbsp</span>
<span style='margin-left:10px;color:maroon' data-bind="text: value, click: function() {editItem()}">&nbsp</span>
</script>

看起来这应该可行,但我显然不理解某些东西。

最佳答案

两件事:

文本框更改事件仅在模糊时触发。您需要使用 keydown 而不是 change。

其次,valueUpdate 绑定(bind)区分大小写。使用 valueUpdate,而不是 valueupdate。

这是一个 updated fiddle that fixes these problems .

关于javascript - Knockoutjs 单击并编辑字段不更新 observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9828951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com