我使用带有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-->
我错过了什么?
答案 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