淘汰赛3.2 AMD组件未更新可观察对象

我无法使用带有组件和要求的基因剔除3.2更新可观察到的数组。我可以在声明时将项目手动推入视图模型中的数组中,这没有问题,但是当通过ajax调用或通过硬编码按动按钮将其推入时,DOM不会更新。

调试时,我可以看到数组中有项目,但是DOM没有更新。任何帮助将不胜感激。

Default.html

<!-- ko if: state() === 'home' -->
    <template></template>
<!-- /ko -->

Template.html

<table id="items">
    <thead>
        <tr>
            <th>Category</th>
            <th>Item</th>
            <th>Cost</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: Items()">
        <tr>
            <td data-bind="text: CategoryName"></td>
            <td data-bind="text: Name"></td>
            <td data-bind="text: '£' + Cost"></td>
        </tr>
    </tbody>
</table>

Startup.js

var appStateViewModel = {
    isRunning: ko.observable(false),
    state: ko.observable('home'),
    allowLog: false
};

// Configure requirejs
require.config({
    paths: {
        text: 'Scripts/text',
        knockout: '//localhost:2222/Scripts/Plugins/knockout'
    },
    urlArgs: "bust=" + (new Date()).getTime()
});

// Register knockout components
ko.components.register('template', { require: './Modules/Template/Template' });

// Apply bindings for state
var scope = document.getElementById('app');
ko.applyBindings(appStateViewModel, scope);

Template.js

define(['knockout', 'text!./Template.html'], function (ko, htmlString) {
    function TemplateViewModel(params) {

        var self = this;
        self.Items = ko.observableArray();

            $.getJSON("Items")
                .done(function (response) {

                    $.each(response, function (i, item) {
                        self.Items.push({
                            Id: item.Id,
                            Name: item.Name,
                            Description: item.Description,
                            Cost: item.Cost,
                            CategoryName: item.CategoryName
                        });
                    });
                })
                .fail(function (listResponse, status, errorThrown) {
                    alert(errorThrown);
                });
    }

    // Return component definition
    return { viewModel: TemplateViewModel, template: htmlString };
});

我找到了解决方法。看来我没有正确设置要求。

解决方法:

require(["knockout", "jquery", "text"], function (ko) {

    // Register knockout components
    ko.components.register('template', { require: './Modules/Template/Template' });

    // Apply bindings for state
    var scope = document.getElementById('app');
    ko.applyBindings(appStateViewModel, scope);

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

淘汰赛组件交流

来自分类Dev

淘汰赛未呈现

来自分类Dev

淘汰赛:链接可观察的数组

来自分类Dev

淘汰赛:更改可观察值

来自分类Dev

是否可以在D3中使用淘汰赛可观察对象

来自分类Dev

淘汰赛订阅可观察的复杂对象的任何更改

来自分类Dev

带有字符的淘汰赛追加可观察对象

来自分类Dev

可观察到淘汰赛更新

来自分类Dev

淘汰赛js绑定未更新

来自分类Dev

淘汰赛js绑定未更新

来自分类Dev

淘汰赛显示未更新

来自分类Dev

使用可观察数组计算出的淘汰赛未更新

来自分类Dev

选择的下拉值更改时,可观察到的淘汰赛未更新

来自分类Dev

自动填充表单表单(Norton Identity Safe)未更新“淘汰赛”的可观察值

来自分类Dev

选择的下拉值更改时,可观察到的淘汰赛未更新

来自分类Dev

淘汰赛-添加了可观察到的不更新新对象的功能

来自分类Dev

淘汰赛:通过代码手动更新可观察对象?

来自分类Dev

淘汰赛-添加了可观察到的未在新对象上更新的功能

来自分类Dev

与淘汰赛组件进行通信

来自分类Dev

淘汰赛未创建和observableArray

来自分类Dev

淘汰赛observableArray未正确绑定

来自分类Dev

淘汰赛自定义组件未更新

来自分类Dev

淘汰赛简单对象映射

来自分类Dev

淘汰赛:对象和foreach

来自分类Dev

淘汰赛JS对象原型问题

来自分类Dev

淘汰赛:更新observableArray中的项目

来自分类Dev

淘汰赛未发送更新的值

来自分类Dev

淘汰赛observableArray不更新UI

来自分类Dev

淘汰赛JS无法更新observableArray