[英]How to refer Knockout.js objects and array of objects in right context
我似乎無法正確理解: http : //jsfiddle.net/dPyQy/4/
我想收集在輸入字段中輸入的標簽以進行保存。 我需要像在RL中一樣將Textbatches引用為SelectedText,我需要能夠在Textbatches中進行選擇。
var Textbatch = function (data,tags) {
var self = this;
self.TextbatchId = data.TextbatchId;
self.Title = ko.observable(data.Title);
self.Text = ko.observable(data.Text);
self.TextTags = ko.observableArray(tags);
function createTypeComputed(tagType) {
return ko.computed(function () {
return ko.utils.arrayFilter(self.TextTags(), function (item) {
return item.Type() == tagType;
});
});
}
self.managerTags = createTypeComputed(0);
self.removeTag = function (tagToRemove) {
self.TextTags.remove(function (item) {
return item.Id == tagToRemove.Id;
});
}
}
掙扎於上下文,對象以及一切。 我希望所選標簽列在輸入字段下方,然后進行調試以顯示更新的對象。
任何幫助,高度贊賞。 感謝名單。
managerTags
計算結果為數組,但是您正在text
綁定中使用它,希望它計算結果為字符串。
您想如何顯示它? 作為HTML列表(使用foreach
綁定來循環標記),還是作為逗號(或其他內容)分隔的字符串(在其上使用join
)?
要獲得逗號分隔的字符串, createTypeComputed
更改為
function createTypeComputed(tagType) {
return ko.computed(function () {
return ko.utils.arrayMap(
ko.utils.arrayFilter(self.TextTags(), function (item) {
return item.Type() == tagType;
}),
function (item) {
return item.Name();
}).join(',');
});
}
請注意,如果您可以指望使用ES5瀏覽器(IE <9以外的任何瀏覽器),則可以簡化用於
return self.TextTags().filter(function (item) {
return item.Type() == tagType;
})
.map(function (item) {
return item.Name();
})
.join(',');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.