Knockout + Webpack - 加载模块

时间:2017-06-30 15:03:46

标签: typescript knockout.js webpack momentjs

我使用带有TypeScript视图模型和WebPack的knockoutJs将它们捆绑在一起。

在我开始使用模块和webpack之前,我能够编写类似的内容:

<p data-bind="text: moment().format('L')">

但是知道我收到了这个错误:消息:时刻未定义

如果我在viewmodel中使用了一下(即:通过将它分配给一个变量)它可以工作。

viewmodel.ts:

import * as ko from 'knockout';
import * as moment from 'moment';

class TestViewModel {  
    test = moment().format('L'); 
}

ko.applyBindings(new TestViewModel(), document.getElementById('mainbinding'));

查看(cshtml部分页面)

<pre data-bind="text: test"></pre> <!-- this works -->
<pre data-bind="text:moment().format('L')"></pre> <!-- this does not work-->

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您的观看次数只能访问您的viewModel&#34; public&#34;属性。 在代码中导入/需要时刻时 - 它就像文件中的局部变量一样。 要解决您的问题,请将时刻分配给viewModel变量:

import * as ko from 'knockout';
import moment from "moment";

class TestViewModel {
    moment: any = moment;
}

ko.applyBindings(new TestViewModel(), document.getElementById('mainbinding'));

但我建议您创建custom binding。你可以从这里获取灵感 - https://gist.github.com/tommck/6174395