から選択された値が、私はオートコンプリートから選択された値(JSON)のリストを維持する必要があり、配列を持っていたマッピングに関するいくつかの基本的なもの、observableArrayと私は最後の数年の間にknockoutjsでは動作しませんでしたautocomplate
を忘れてしまいました 私は次のコードを作成しました:私は私の選択を参照して、結果として
define(['jquery', 'knockout', 'koAutocomplete', 'mapBase','app/obj/routePoint'],
function ($, ko, koAutocomplete, mapBase, routePoint) {
return function routeBuilder() {
var self = this;
mapBase.initMap();
self.rootPoints = ko.observableArray([new routePoint()]);
self.addNewPoint = function() {
self.rootPoints.push(new routePoint());
};
self.removePoint = function() {
self.rootPoints.remove(this);
};
self.getOptions = function(searchTerm, callback) {
$.ajax({
dataType: "json",
url: "/api/Geocoder",
data: {
query: searchTerm
},
}).done(function (results) {
callback(mapBase.convertToAutoComplate(results));
});
}
};
});
// Main viewmodel class
define(['knockout'],
function (ko) {
return function routePoint(label, locationId) {
var self = this;
self.label = label;
self.locationId = locationId;
self.selectedData = ko.observable();
};
});
<ul data-bind="foreach: { data: rootPoints, as: 'point' } ">
<li>
Name at position <span data-bind="text: $index"> </span>:
<input placeholder="Start Type Name"
data-bind="jqAuto: {
value: $data.selectedData().label,
valueProp: '$data,
source: $parent.getOptions,
dataValue: $data,
inputProp: 'label',
labelProp: 'label',
options: { minLength: 3 } }" />
<a href="#" data-bind="click: $parent.removePoint">Remove</a>
</li>
</ul>
、UIしかしrootPointsアレイ自制空の値にします。 選択したオブジェクトを特定の配列インデックスにマップする方法はありますか?
mapBase.convertToAutoComplateとは何ですか? –
@JasonSpake routePointオブジェクトリスト –
その関数にブレークポイントを置くとヒットしますか? –