Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用复杂的Knockout.js对象进行数据绑定_Javascript_Jquery_Knockout.js_Knockout Mapping Plugin_Knockout 2.0 - Fatal编程技术网

Javascript 使用复杂的Knockout.js对象进行数据绑定

Javascript 使用复杂的Knockout.js对象进行数据绑定,javascript,jquery,knockout.js,knockout-mapping-plugin,knockout-2.0,Javascript,Jquery,Knockout.js,Knockout Mapping Plugin,Knockout 2.0,让foreach循环在KnockOut.js中工作,我遇到了一些问题,即使我试图让代码抛出错误,它也不会。这就好像它根本没有试图绑定到表 var History = function (data) { this.Average = ko.observable(data.Average); this.Count = ko.observable(data.Count); }; var DataSource = function (data) { var convertDat

让foreach循环在KnockOut.js中工作,我遇到了一些问题,即使我试图让代码抛出错误,它也不会。这就好像它根本没有试图绑定到表

var History = function (data) {
    this.Average = ko.observable(data.Average);
    this.Count = ko.observable(data.Count);
};

var DataSource = function (data) {
    var convertData = function (array) {
        return $.map(data.Data, function (option) {
            return new History;
        });
    };

    this.Data = ko.observableArray(this.convertData());

    return {
        'Data': this.Data
    };
};

var dataMappingOptions = {
    create: function (options) {
        return new DataSource(options);
    }
};

var dataModel = function () {
    this.source = ko.mapping.fromJS({ 'Data': [], 'Percentage': 0 });
};

currentViewModel = new dataModel();
ko.applyBindings(currentViewModel);
在其他一切正常的情况下,我已经去掉了其中的许多复杂性。基本上,我使用Knockout.Mappings将AJAX响应映射到这些对象,并为计算字段添加函数。这里的HTML似乎忽略了我所做的一切;它将显示,但没有任何内容绑定到它

<table>
    <thead>
        <tr>
            <th>Average</th>
            <th>Frequency</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: kjhkjh">
        <tr>
            <td data-bind="text: $data.Average()"></td>
            <td data-bind="value: $data.Average"></td>
            <td data-bind="text: $data.Average"></td>
            <td data-bind="value: $data.Average()"></td>
            <td>Test</td>
        </tr>
    </tbody>
</table>

这部分似乎不正确。在同一语句中有两个返回。在
$.map(

也可能是您正在为
数据源
对象的私有方法
convertData()
引用
。从此处删除

ko.observableArray(this.convertData());

此部分似乎不正确。同一语句中有两个返回。请尝试在
$.map(

也可能是您正在为
数据源
对象的私有方法
convertData()
引用
。从此处删除

ko.observableArray(this.convertData());

我所犯的错误是由于在页面上放置了我的淘汰模型造成的。一旦我移动了引用下表所在的JS文件的脚本标记,它就正常工作了。这就是除了这个摘录之外,所有页面都正常工作的原因。这部分是因为我将它作为全局变量,作为页面的多个部分和几个JS f我需要引用它


尽管如此,Stockedout确实指出了一些我能够改进代码的方法。

我所犯的错误是由于在页面上放置了我的敲除模型造成的。一旦我移动了指向下面的JS文件的脚本标记,该表就正常工作了。这就是除了这个摘录之外,所有页面都正常工作的原因。这在第因为我把它作为一个全局变量,作为页面的多个部分和引用它所需的几个JS文件


话虽如此,Stockedout确实指出了我改进代码的一些方法。

我要补充的是,Firebug中根本没有出现错误。页面的每个其他部分都正常工作。如果您可以将代码放入JSFIDE中,If将有所帮助。我可以看到您的代码有很多错误,但如果我们可以fid,这将使每个人的生活变得更轻松修改代码。我要补充的是Firebug中根本没有出现错误。页面的其他部分都正常工作。如果你能将代码放入JSFIDLE中,If会有所帮助。我可以看到你的代码有很多错误,但如果我们能修改代码,会让每个人的生活更轻松。我还添加了一个更新,解释了我必须做的事情从javascript中的对象获取值。仍然没有。我不知道发生了什么,它甚至不会抛出错误。你能把它放到一个JSFIDLE项目中并在这里发布链接吗?我会帮你看一下。我还添加了一个更新,解释了我必须做什么才能从javascript中的对象获取值。仍然没有。我会我不知道发生了什么,它甚至不会抛出错误。你能把它放到一个JSFIDLE项目中,并在这里发布链接吗?我会帮你看一下
ko.observableArray(this.convertData());