typescript - ko.mapping || 无法读取未定义的属性“fromJS”
问题描述
我是打字稿的新手。我一直在尝试使用 knockout.mapping ,但是,我无法使其工作。
我已经安装了knockout 和knockout.mapping 的库,以及这两个库中的@types,即使这样也无法正常工作。
我在 laravel 项目中使用打字稿,我正在使用 laravel mix 来生成 javascript 文件。
我得到了下一个片段:
///<reference path="../../../../node_modules/@types/jquery/index.d.ts"/>
///<reference path="../../../../node_modules/@types/knockout/index.d.ts"/>
///<reference path="../../../../node_modules/@types/knockout.mapping/index.d.ts"/>
import * as ko from "knockout";
import * as $ from "jquery";
$(function(){
//this is only a test to check if ko.mapping exists on the ko object. And no, it doesn't appears.
console.log("Message from jQuery Done", (ko));
});
class MyModel {
_data: any;
constructor(the_data: object)
{
let self = this;
let example_observable = ko.observable(); //This is fine
ko.mapping.fromJS(the_data, self._data); // This fails with the error -> Cannot read property 'fromJS' of undefined
}
}
let myModel = new MyModel({"x": "y"});
ko.applyBindings(myModel);
我的 package.json 包含了 knockout 和 knockout.mapping 依赖项。
"@types/jquery": "^3.3.6",
"@types/knockout": "^3.4.58",
"@types/knockout.mapping": "^2.0.33",
"ajv": "^6.5.2",
"knockout": "^3.4.2",
"knockout.mapping": "^2.4.3",
我不明白我做错了什么。
我很感激任何帮助。
提前致谢。
解决方案
这对我有用。也许我正在应用一个糟糕的解决方案,但它绝对有效。
我的问题是“laravel mix”。
在 webpackconfig 我必须添加下一个:
mix.webpackConfig({
//...
externals: { // I supossed any "global" libraries goes here.
'knockout': 'ko'
}
//...
});
在我的 HTML 中必须添加:
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js"></script>
而且,瞧!
我确实尝试过 mix.autoload但没有用,但可能是因为我不知道如何使用它。
让我知道这是否是一个愚蠢的答案。我会取消标记它。
推荐阅读
- javascript - 应在单行中选择至少一个复选框
- javascript - javascript addEventListener 应用于所有元素
- python - 是否可以在 Pandas 中结合 Isin caluse 和 or 运算符?
- reactjs - 从 localStorage 读取值后,如何以编程方式检查单选按钮
- html - 带有左右元素的电子邮件 HTML 导航,包括徽标、按钮和文本
- flutter - Content-Length 标头出现多次,最多允许出现一次
- javascript - 错误:对象作为 React 子对象无效(找到:带有键 {low, high} 的对象)
- python - re.search 模式和长/复杂字符串不匹配
- c# - 用作泛型参数时调用双“==”运算符
- c# - 如何从 FileSystemWatcher Onchanged 事件添加到队列并根据更改的文件触发不同的操作