私はノックアウト js で大規模な SPA を設計するの Steve Sanderson の例に従っています。テンプレートに bootstrap-multiselect ウィジェットを作成したいと考えています。に含め"bootstrap-multiselect": "src/bower_modules/bootstrap-multiselect/dist/js/bootstrap-multiselect",
ましたrequire.config.js
。
bootstrap-multiselect はノックアウト対応です - ノックアウト バインディング ハンドラーが既に組み込まれています。
!function($) {
"use strict";// jshint ;_;
if (typeof ko !== 'undefined' && ko.bindingHandlers && !ko.bindingHandlers.multiselect) {
ko.bindingHandlers.multiselect = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
///etc...
init:
その全体とupdate:
関数をコピーしてコンポーネント js に貼り付けると、ウィジェットをレンダリングして適切に動作させることができます。しかし、私はそれをする必要はありません。AMD モジュール内に bootstrap-multiselect バインディング ハンドラを含めるにはどうすればよいですか? バインドが尊重されないため、bootstrap-multiselect が require に含まれていることを確認するだけでは機能しません。私は次のようなことができるはずです
define(['knockout', 'bootstrap-multiselect', 'text!./scheduler-profile.html'], function(ko, multiselect, templateMarkup) {
ko.bindingHandlers.multiselect = {
multiselect();
}
しかし、それはうまくいきません。ビューモデルを持つ AMD モジュールの別のファイルで定義されたバインディング ハンドラーを含めるにはどうすればよいですか?