所以,我有幾乎同樣的問題,但我想我可以在我的要求更加明確。
我有一個dxList使用SQLite表作爲數據源。它設置爲允許用戶從模板列表中進行選擇以應用於其他對象。這個新的模板列表和關聯的對象ID將被保存在與原始數據不同的表格中,因此,我需要能夠識別列表中已檢查過的項目。
<div data-bind="dxList: { dataSource: templateList }">
<div data-bind="dxAction: ''" data-options="dxTemplate : { name: 'item' } ">
<table>
<tr>
<td>
<div data-bind="dxCheckBox: { }"></div>
</td>
<td>
<div style="font-weight: bold; padding-left: 10px;" data-bind="text: TemplateName"></div>
</td>
</tr>
</table>
</div>
</div>
我在初次搜索時發現了這篇文章。我無法使用每個複選框的data-bind:{checked:?}值,就像發現原始海報那樣,設置全部或不設置。我想過一個數組。我將嘗試使用dxAction從數組中添加/刪除已檢查的列表項ID,但我不確定這樣做會有多好。然後有最後的解析來獲取所有檢查的項目。一旦我開始工作,我會更新這篇文章。
分辨率:
視圖模型對象:
selectedTemplates: ko.observableArray(),
selectTemplate: function (args) {
//If it's there. Remove it.
if (args.model.selectedTemplates.indexOf(args.itemData.TemplateID) > -1) {
args.model.selectedTemplates.pop(args.itemData.TemplateID);
args.itemElement[0].style.backgroundColor = '';
args.itemElement[0].style.color = 'Black';
}
//else Add
else {
args.model.selectedTemplates.push(args.itemData.TemplateID);
args.itemElement[0].style.backgroundColor = '#017AFF';
args.itemElement[0].style.color = 'White';
}
},
和視圖:
<div data-options="dxView : { name: 'SelectSurveys', title: 'SelectSurveys' } ">
<div data-bind="dxCommand: { title: 'Save', id: 'create', action: saveSelections, icon: 'save' }"></div>
<div data-options="dxContent : { targetPlaceholder: 'content' } ">
<div data-bind="dxList: { dataSource: templateList, itemClickAction: selectTemplate }">
<div data-options="dxTemplate : { name: 'item' } ">
<div style="font-weight: bold; padding-left: 10px;" data-bind="text: SurveyName"></div>
</div>
</div>
</div>
</div>
和循環選定的值保存到本地數據庫:
$.each(args.model.selectedTemplates(), function (index, value) {
db.transaction(function (tx) {
console.log("Inserting Data");
tx.executeSql(sql, [value],
function (t, result1) {
if (result1 != null) {
console.log("New Item added." + result1.insertId);
}
},
function (t, error) {
console.log(error);
});
});
在物體s,我已經添加了一些着色,因此您可以知道選擇了哪些着色,它不使用dxSwitch或複選框,但它的工作原理也一樣,我認爲它更具視覺吸引力,並且對用戶有幫助。
你是如何測試的?最壞的情況下,我會嘗試使用像螢火蟲或開發工具的東西右鍵單擊並檢查複選框,看看是什麼屬性告訴它看起來檢查,然後做一個jquery調用,說找到'checked'元素,並與他們做一些事情。 – segFault
@segFault如果我需要,我會這樣做,但是如果可以的話,我希望有一個來自PhoneJS的內置解決方案 – Caleb