【问题标题】:cannot read property 'fromJS' of undefined in external viewmodel.js无法读取外部 viewmodel.js 中未定义的属性“fromJS”
【发布时间】:2015-04-05 04:54:44
【问题描述】:

我不断收到错误:未捕获的类型错误:无法读取未定义的属性“fromJS” 这个想法是有 2 个页面,其中是 ui 表示,另一个是 het viewmodel。 我有 2 页:

索引.html

<link rel="stylesheet" href="bin/styles/kendo.common.min.css" />
<link rel="stylesheet" href="bin/styles/kendo.default.min.css" />
<link rel="stylesheet" href="bin/styles/kendo.dataviz.min.css" />
<link rel="stylesheet" href="bin/styles/kendo.dataviz.default.min.css" />

<script src="bin/js/jquery.min.js"></script>
<script src="bin/js/kendo.all.min.js"></script>
<script src="bin/knockout-3.2.0.js"></script>
<script src="bin/knockout.mapping-latest.js" type="text/html"></script>

<script src="IndexViewModel.js"></script>

<script>
    $(function() {
        var indexVM = new IndexViewModel.ViewModel();
        ko.applyBindings(indexVM);
    });
</script>


<table>
    <thead><tr>
        <th>First Name</th>
    </tr></thead>
    <tbody data-bind="foreach: Users">
        <tr>
            <td data-bind="text: UserName"/></td>
        </tr>
    </tbody>
</table>

和 IndexViewModel.js :

var IndexViewModel = (function (IndexViewModel) {
IndexViewModel.ViewModel = function() {
    var self = this;
    self.Users = ko.observableArray();
    $.ajax({
        url : 'GetUsers.php',
        dataType: 'json',
        success: function(data){ //json string of the student records returned from the server
        self.Users = ko.mapping.fromJS(result.data, {}, self.Users);
        }
    });
}
    return IndexViewModel;
}(IndexViewModel || {}));

我做错了什么/错过了什么?

谢谢

【问题讨论】:

  • 您能否检查浏览器开发者工具中的网络选项卡并确保已下载了 knockout.mapping-latest.js?
  • 是的,它确实被加载了。但是 knockout.mapping-latest.js 应该在 index.html 中引用,而不是在 indexviewmodel.js 中,对吧?远程地址:[::1]:80 请求地址:localhost/bin/knockout.mapping-latest.js 请求方法:GET 状态码:304 未修改请求头查看源
  • 能不能看一下内容。它应该有 ko.mapping 像这样:factory(ko, ko.mapping = {});github.com/SteveSanderson/knockout.mapping/blob/master/…
  • 它没有。我将您提供的 github 链接的完整内容复制到了一个新文件 knockout.mappings.js 中,并在 index.html 中引用了该文件,但同样的错误。
  • 这肯定与敲除映射文件未正确加载有关。这是您在 jsfiddle 中工作的代码。

标签: javascript knockout.js knockout-mapping-plugin


【解决方案1】:

解决了这个问题。问题是

<script src="bin/knockout.mapping-latest.js" type="text/html"></script> 

改为:

<script src="bin/knockout.mapping-latest.js"></script>

起飞:type="text/html"

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2020-04-06
    相关资源
    最近更新 更多