Asp.net mvc 在敲除绑定数据之前查看渲染
我确信以前有人问过这个问题,但可惜我找不到它——如果有人能帮我指出正确的方向,我将不胜感激 我正在用Durandal加载视图/视图模型,在激活方法期间,我调用一条记录来获取并显示。我正在恢复记录(检查了XHR响应,所有数据都恢复正常),但我只能假设视图是在数据准备好显示之前加载的。没有JS错误,根本没有错误,只是在屏幕中间有一个大的空白,即使我知道数据应该显示……/P> 视图模型:Asp.net mvc 在敲除绑定数据之前查看渲染,asp.net-mvc,knockout.js,breeze,single-page-application,durandal,Asp.net Mvc,Knockout.js,Breeze,Single Page Application,Durandal,我确信以前有人问过这个问题,但可惜我找不到它——如果有人能帮我指出正确的方向,我将不胜感激 我正在用Durandal加载视图/视图模型,在激活方法期间,我调用一条记录来获取并显示。我正在恢复记录(检查了XHR响应,所有数据都恢复正常),但我只能假设视图是在数据准备好显示之前加载的。没有JS错误,根本没有错误,只是在屏幕中间有一个大的空白,即使我知道数据应该显示……/P> 视图模型: define(['durandal/system', 'services/logger', 'services/d
define(['durandal/system', 'services/logger', 'services/datacontext'], function (system, logger, datacontext) {
var aForm = ko.observable();
var initialized = false;
function activate(routeData) {
var id = parseInt(routeData.id);
return refresh(id);
};
function refresh(id) {
return datacontext.getaFormById(id, aForm);
}
var vm = {
activate: activate,
aForm: aForm,
title: "THE TITLE DISPLAYS JUST FINE"
}
return vm;
});
视图:
<h3 class="page-title" data-bind="text: title"></h3>
<div class="container-fluid" data-bind="with: aForm">
<div class="row-fluid">
<div class="span12">
<strong>Testing</strong>
<strong data-bind="text: id"></strong>
</div>
</div>
<h2 data-bind="text: description"></h2>
<h2 data-bind="text: checkType().description"></h2>
</div>
您没有在
executeQuery
success回调中正确填充您的可观察对象,这就是您的UI没有正确呈现的原因
从executeQuery
调用successFunction
,并使用以下参数
successFunction([数据])
- 数据对象
- 结果实体数组
data.results
数组中填充您的可观察值,而不是从data.entity
表单中填充(仅返回未定义的):
您没有在
executeQuery
success回调中正确填充您的可观察对象,这就是您的UI没有正确呈现的原因
从executeQuery
调用successFunction
,并使用以下参数
successFunction([数据])
- 数据对象
- 结果实体数组
data.results
数组中填充您的可观察值,而不是从data.entity
表单中填充(仅返回未定义的):
您可以通过从activate函数返回jQuery promise()来告诉Durandal推迟绑定
请参阅Ryan Keeter的视频以了解解释:您可以通过从activate函数返回jQuery promise()来告诉Durandal推迟绑定
查看Ryan Keeter的视频以了解解释:在viewmodel中,您有
a表单
,但在html中,您有templateForm
。。你的问题中有错别字吗?是的,错别字是固定的,谢谢。更改了它的易读性,错过了html。我希望它是像一个额外的愚蠢的东西;但如果是的话,这是在暗示我在过去的4个小时。你似乎把你的代码简化到了这里。根据你的密码,我无法重新处理你的问题。在异步设置了aForm
之后,视图绑定良好。我不确定还有什么有助于发布。有人有主意吗?一直在折磨我。如果我破坏了绑定,就会出现强“测试”,但当我修复绑定时,它会再次消失。是否可能没有发生回调?我可以通过解决方法解决此问题,并以不同的方式返回aForm,但我仍然希望看到正确的方法,因此我将在您的viewmodel中保留此问题,您有aForm
,但在html中有templateForm
。。你的问题中有错别字吗?是的,错别字是固定的,谢谢。更改了它的易读性,错过了html。我希望它是像一个额外的愚蠢的东西;但如果是的话,这是在暗示我在过去的4个小时。你似乎把你的代码简化到了这里。根据你的密码,我无法重新处理你的问题。在异步设置了aForm
之后,视图绑定良好。我不确定还有什么有助于发布。有人有主意吗?一直在折磨我。如果我破坏了绑定,就会出现强“测试”,但当我修复绑定时,它会再次消失。是否可能没有发生回调?我可以通过解决方法解决此问题,并以不同的方式返回aForm,但我仍然希望看到正确的方法,因此我将保留此问题,因为它不会返回未定义,只是不是击倒想要看到的,因为它似乎没有返回未定义的注释,只是不是击倒想要看到的
var getaFormById = function (aFormId, aFormObservable) {
var query = EntityQuery.from('aForms')
.where('id', '==', aFormId);
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
if (aObservable) {
aObservable(data.entity);
}
logger.log('Retrieved selected [aForm] from remote data source', data, system.getModuleId(datacontext), true);
}
}
if (aObservable) {
aObservable(data.results[0]);
}