select2 集成knockoutjs
1. execute scripts when page loading:
ko.bindingHandlers.select2 = {
init: function(element, valueAccessor, allBindingsAccessor) {
var options = ko.toJS(valueAccessor()) || {};
var allBindings = allBindingsAccessor();
var lookupKey = allBindings.lookupKey;
setTimeout(function() {
$(element).select2(options);
}, 0);
if (lookupKey) {
var value = ko.utils.unwrapObservable(allBindings.value);
$(element).select2('data', ko.utils.arrayFirst(options.data.results, function(item) {
return item[lookupKey] === value;
}));
}
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).select2('destroy');
});
},
update: function(element) {
$(element).trigger('change');
}
};2. page html tag, Ex:
<select id="form_input1_orientation"></select>
3. data binding :
$("#form_input1_orientation").attr("data-bind",
"options: orientationCategories, optionsValue: 'Id', optionsText: 'Name', selectedOptions: install().orientation_1, select2: {}");4. view modal:
var orientationCategoriesData = [
{Id: "north", Name: "正北"},
{Id: "northeast", Name: "东北"},
{Id: "northwest", Name: "西北"},
{Id: "east", Name: "正东"},
{Id: "southeast", Name: "东南"},
{Id: "south", Name: "正南"},
{Id: "southwest", Name: "西南"},
{Id: "west", Name: "正西"}
]
self.orientationCategories = ko.observableArray(orientationCategoriesData);
self.orientation_1 = ko.observable(["east"]);enjoy.
相关推荐
85931734 2019-11-25
88901533 2014-11-06
89570797 2015-03-11
85580894 2014-04-02
89570797 2016-05-31
80961131 2015-03-11
87941631 2015-02-10
89233916 2015-01-14
89233916 2015-01-07
87941631 2014-11-06
89233916 2014-11-04
80961131 2014-11-03
89433869 2014-09-11
89570797 2013-08-24
88901533 2012-08-24
87941631 2012-06-14
89901038 2017-12-18
89901038 2017-07-31
85971631 2019-05-08