【问题标题】:Durandal KO Binding View IssueDurandal KO 绑定视图问题
【发布时间】:2013-03-15 00:57:41
【问题描述】:

我的 Durandal 视图模型是这样工作的:

define(function (require) {
var http = require('durandal/http');

return {
    subjectItem: function (data) {
        var self = this;
        self.Subject_ID = data.Subject_ID;
        self.Subject_Name = data.Subject_Name;
    },
    subjects: ko.observableArray([]),
    activate: function () {
        var self = this;
        http.ajaxRequest("get", "/api/values/getsubjects")
            .done(function (allData) {
                var mappedSubjects = $.map(allData, function (list) { return new self.subjectItem(list); });
                self.subjects(mappedSubjects);
            });
    }
};
});

但是,在第一次导航到该视图时,它运行 ajax 调用但不更改 dom,再次导航到它并且它们都出现(仍然运行 ajax 调用)。这是我的html:

<table>
<thead>
    <tr>
        <th>Name</th>
    </tr>
</thead>
<tbody data-bind="foreach: subjects">
    <tr>
        <td data-bind="text: Subject_Name"></td>
    </tr>
</tbody>
</table>

任何线索,我对使用 Durandal 非常陌生,但现在担心它不会有效地保持 dom 更新。

【问题讨论】:

    标签: asp.net-mvc durandal


    【解决方案1】:

    我觉得你的问题很像:HotTowel: Viewmodel lose mapping when navigating between pages

    AJAX 调用是一个异步任务,因此您需要在 activate 函数中返回一个 promise,以告知 durandal 等到检索到数据后再继续应用绑定。

    【讨论】:

    • 完美,我只是将 return 放在我的 ajaxRequest 调用的开头,现在每次都在那里,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2015-03-02
    • 2015-04-09
    • 1970-01-01
    • 2011-08-07
    • 2014-04-11
    • 2013-08-16
    相关资源
    最近更新 更多