私は、SPサービスライブラリを使用してSharePoint 2010プロジェクトでknockout jsを使用しています。私はフィールドのいずれかのオートコンプリート機能を実装しようとしています。ここに私のコードは次のとおりです。ノックアウト自動完了
<input id="newTask" title="task" data-bind="value: newTask" placeholder="Add new task" />
<button data-bind="click: addTask" class="btn">
これは私のViewModel.jsです:
<script type="text/javascript">
$(document).ready(function() {
$('#newTask').on('input propertychange paste', function (e) {
var val = $(e.currentTarget).val();
viewModel.newTask(val);
});
// Init
viewModel = new taskListViewModel();
ko.applyBindings(viewModel, document.getElementById("parent-container"));
$().SPServices.SPAutocomplete({
sourceList: "Bidders",
sourceColumn: "Title",
columnName: "task",
ignoreCase: true,
numChars: 3,
slideDownSpeed: 1000,
debug: true
});
});
</script>
:私のView.htmlファイルから
(function() {
function Task(data) {
this.Tasks = ko.observable(data.Tasks);
/*other fields*/
}
function TaskListViewModel() {
var ctx = new SP.ClientContext(_spPageContextInfo.webServerRelativeUrl);
var web = ctx.get_web();
var taskList = web.get_lists().getByTitle("Tasks");
// Data
var self = this;
self.taskInformation = ko.observableArray([]);
self.newTask = ko.observable();
/*other fields*/
self.addTask = function() {
self.taskInformation.push(new Task(
{
Tasks: this.newTask(),
/*other fields*/
}));
self.newTask("");
};
var taskListViewModel;
$(document).ready(function() {
EnsureScriptFunc("sp.js", "SP.ClientContext", function() {
taskListViewModel = new TaskListViewModel();
ko.applyBindings(taskListViewModel);
});
});
})();
このスクリプト私の入力フィールドがどのように見えるか
この
自動補完機能は新しく追加されたタスクは、入力された文字のみを使用します。例:マイクと入力すると(オートコンプリートはマイクロソフトのオプションです)、このオプションを選択して[追加]をクリックすると、マイクのみが使用されます。
'SPServices.SPAutocomplete'は(DOMを操作する)jQueryプラグインのように見えますか?そうであれば、カスタムバインディングハンドラの作成を検討してください。 – Jeroen