Knockout.js 使用requirejs和typescript未定义淘汰ko

Knockout.js 使用requirejs和typescript未定义淘汰ko,knockout.js,requirejs,typescript,Knockout.js,Requirejs,Typescript,我的typescript文件生成以下输出,但我得到一个在AppViewModel中未定义的ko。欢迎任何关于我如何解决这个问题的建议。带有typescript的visual studio解决方案如下所示: /Scripts/App/config.js /脚本/视图模型 index.html 家 你得到一个你好世界了吗? 对不起,对于我的原始答案,您是否尝试过将config.js文件中的/Scripts/reference大写?对不起,对于我的原始答案,您是否尝试过将config.js文件中的/

我的typescript文件生成以下输出,但我得到一个在AppViewModel中未定义的ko。欢迎任何关于我如何解决这个问题的建议。带有typescript的visual studio解决方案如下所示:

/Scripts/App/config.js /脚本/视图模型 index.html

家
你得到一个你好世界了吗?

对不起,对于我的原始答案,您是否尝试过将config.js文件中的/Scripts/reference大写?

对不起,对于我的原始答案,您是否尝试过将config.js文件中的/Scripts/reference大写?

首先尝试加载淘汰,看起来您的viewmodel是一个已编译的TypeScript模块。手动加载淘汰而不是依赖项可能会给您更多的控制

require([
    'knockout',
    'AppViewModel'
], function (ko, avm) {
    var viewmodel = new avm.AppViewModel();
    ko.applyBindings(viewmodel);
    alert('hello world - SUCCESS');
});

另外,请确保将knockout作为AppViewModel的dep删除

首先尝试加载knockout,因为您的viewmodel似乎是一个已编译的TypeScript模块。手动加载淘汰而不是依赖项可能会给您更多的控制

require([
    'knockout',
    'AppViewModel'
], function (ko, avm) {
    var viewmodel = new avm.AppViewModel();
    ko.applyBindings(viewmodel);
    alert('hello world - SUCCESS');
});

另外,请确保作为AppViewModel的副产品删除knockout。我用以下方法对其进行了黑客攻击,但如果人们能找到更好的方法,我希望得到任何评论

require(['knockout','AppViewModel'], (koo,avm) => {
    (<any>window).ko = koo;
    var viewmodel = new avm.AppViewModel();
    ko.applyBindings(viewmodel);
    alert('hello world - SUCCESS');

});
require(['knockout','AppViewModel',(koo,avm)=>{
(窗口)ko=koo;
var viewmodel=new avm.AppViewModel();
应用绑定(视图模型);
警报(“你好,世界-成功”);
});

我用以下方法对其进行了黑客攻击,但如果人们能找到更好的方法,我希望得到任何评论

require(['knockout','AppViewModel'], (koo,avm) => {
    (<any>window).ko = koo;
    var viewmodel = new avm.AppViewModel();
    ko.applyBindings(viewmodel);
    alert('hello world - SUCCESS');

});
require(['knockout','AppViewModel',(koo,avm)=>{
(窗口)ko=koo;
var viewmodel=new avm.AppViewModel();
应用绑定(视图模型);
警报(“你好,世界-成功”);
});

我相信OP讨论的是运行时错误与编译时错误。看起来他已经发布了编译好的javascript,这意味着它构建得很好。这是我自己的问题,你可以链接到,但它并不能解决问题。这个问题是用一个最小的解决方案来解决我的问题,即ko没有定义。请更详细地说明使样本工作所需的内容。@dmck是正确的。编译工作很好,这是一个运行时错误,ko没有在全局范围内定义。我相信OP所说的是运行时错误与编译时错误。看起来他已经发布了编译好的javascript,这意味着它构建得很好。这是我自己的问题,你可以链接到,但它并不能解决问题。这个问题是用一个最小的解决方案来解决我的问题,即ko没有定义。请更详细地说明使样本工作所需的内容。@dmck是正确的。编译工作正常,这是一个运行时错误,因为ko未在全局范围中定义。它使ko在配置中可用是。但不在AppViewModel中。ko未在全局范围内定义。加载时间是我的问题。我将KO和KO.Mapping放在同一个包中,但它失败了。我将捆绑包分开,它成功了。它使ko在配置中可用是的。但不在AppViewModel中。ko未在全局范围内定义。加载时间是我的问题。我将KO和KO.Mapping放在同一个包中,但它失败了。我将捆绑包分开并成功了。你找到更干净的方法了吗?是的,使用最新的Typescript,所有东西都可以通过nuget ect的类型定义实现。尝试搜索更多,如果你找不到有效的解决方案,你可以发送电子邮件给pks@s-innovations.net和我将在周末尝试找到一个例子。你找到一个更干净的方法来做到这一点吗?是的,使用最新的Typescript,使用nuget ect的类型定义,一切都很顺利。尝试搜索更多,如果你找不到有效的解决方案,你可以发送电子邮件给pks@s-innovations.net和我将在周末尝试寻找一个例子。
require(['knockout','AppViewModel'], (koo,avm) => {
    (<any>window).ko = koo;
    var viewmodel = new avm.AppViewModel();
    ko.applyBindings(viewmodel);
    alert('hello world - SUCCESS');

});