【发布时间】:2015-03-29 15:26:18
【问题描述】:
我打算使用 Knockout Mapping 插件将 ajax 调用返回的数据映射到 Durandal 框架下的视图模型。但是,我不知道如何返回映射对象以便视图可以使用它。这是我的视图模型 login.js 代码:
define(function (require) {
var system = require('durandal/system'),
app = require('durandal/app'),
ko = require('knockout'),
komapping = require('komapping'),
deferred = $.Deferred(),
loginOptionsUrl = '/json/loginOptions.json',
loginInterfaceData = {};
ko.mapping = komapping;
return {
activate: function(){
var request = $.getJSON(loginOptionsUrl)
.done(function(data){
loginInterfaceData = ko.mapping.fromJS(data);
system.log(loginInterfaceData); //Do a check here; loginInterfaceData contains all the right data
deferred.resolve();
});
return deferred.promise();
},
loginInterfaceData: loginInterfaceData; //However, the view gets an empty object
如您所见,从ko.mapping返回的对象被分配给loginInterfaceData,我将其返回给视图。但是,当我在 Web Inspector 下检查 'viewmodels/login' 返回的 loginInterfaceData 对象时,它是一个空对象。我能想到的唯一原因是视图模型在映射完成之前返回 loginInterfaceData。但是,我不知道如何防止这种情况发生。
任何想法/建议将不胜感激。提前致谢!
【问题讨论】:
标签: javascript mvvm knockout.js durandal