タイプスクリプトを使用してビューモデルをクラスに分離しました。
今私のBootstraperで、私はそれらをすべて次のようにインポートしています:
import dl = module("DataLayer");
import vm1 = module("AppBarViewModel");
import vm2 = module("Nav2ViewModelCommander");
import vm3 = module("IdentityViewModel");
それらを 1 つの名前空間に集める方法はありませんか? 私はrequirejsを使用しており、jsにコンパイルするとビューモデルは次のようになります。
define(["require", "exports"], function(require, exports) {
var AppBarViewModel = (function () {
function AppBarViewModel() {
this.visible = ko.observable(true);
this.buttons = ko.observableArray([]);
this.enableContext = ko.observable(true);
this.canClose = ko.computed(function () {
var k = ko.utils.arrayFirst(this.buttons(), function (b) {
return b.blockHide && b.blockHide == true;
});
return k == null;
});
}
AppBarViewModel.prototype.addButton = function (data) {
this.buttons.push(data);
this.visible(data.blockHide && data.blockHide == true);
};
AppBarViewModel.prototype.removeButton = function (data) {
this.buttons.remove(data);
this.visible(!this.canClose());
};
return AppBarViewModel;
})();
exports.AppBarViewModel = AppBarViewModel;
})
から
///<reference path="../knockout.d.ts" />
///<reference path="../require.d.ts" />
declare var ko: any;
export class AppBarViewModel {
visible = ko.observable(true);
buttons = ko.observableArray([]);
enableContext = ko.observable(true);
addButton(data) {
this.buttons.push(data);
this.visible(data.blockHide && data.blockHide == true);
}
removeButton(data) {
this.buttons.remove(data);
this.visible(!this.canClose());
}
canClose = ko.computed(function () {
//var buttons = self.buttons();
//ko.utils.arrayForEach(self.buttons(), function () { return });
var k = ko.utils.arrayFirst(this.buttons(), function (b) { return b.blockHide && b.blockHide == true });
return k == null;
});
constructor() {
}
}