我有一系列任务。
var task = function(name){
var self = this;
self.taskTitle = ko.observable(name);
};
function taskViewModel(){
var self = this;
self.title = ko.observable('');
self.tasks = ko.observableArray([]);
self.addTask = function (){
self.tasks.push(new task(self.title());
}
这是html:
<td>
<span data-bind='text: taskTitle, visible: !editing(), click: $root.editItem'></span>
<input data-bind='visible: editing, selectAndFocus: editing, value: taskTitle, hasFocus: editing'>
</td>
因此,当您触摸跨度时,它将转换为具有任务标题值的输入,以便您可以更改它。我想验证数值的变化,它不会在数组中重复。
我的所有任务都在可观察的数组任务中。
感谢您的帮助
答案 0 :(得分:0)
在这里你去jsfiddle。
function task(name, parent){
var upArray = parent;
var self = this;
self.taskTitle = ko.observable(name);
self.oldCopy = ko.observable(name);
self.editing= ko.observable(false);
self.editNow = function(){
self.editing(true);
};
self.blurOut = function()
{
self.editing(false);
};
self.oldCopy.subscribe(function(newVal){
if (upArray.tasks)
{
for(var i = 0; i < upArray.tasks().length; i++){
if (upArray.tasks()[i].taskTitle() === newVal){
self.oldCopy(self.taskTitle());
return;
}
}
self.taskTitle(newVal);
}
});
}
function taskViewModel(){
var self = this;
self.title = ko.observable('Title');
self.tasks = ko.observableArray([new task('oak', this)]);
self.tasks.push(new task('tree', this));
}
ko.applyBindings(new taskViewModel()); // This makes Knockout get to work
它非常草率但它的快速和脏版本。请注意订阅,每次更改时我都会获得新值。这就是我将数组与新给定值进行比较的地方。订阅基本上是该变量的观察者。