我正在一个需要Asp.Net WebForms的项目(是一个巨大的.net 2.0站点的迁移,没有时间重新实现MVC)和asmx Web服务。当请求页面由服务器发送并且像SPA一样工作时。过了一会儿,我们意识到我们需要一个javascript背后的模型来避免噩梦代码。我们尝试了Knockout.js直到我们遇到了一个我们无法解决的问题:使用用户控件和Knockout.js查看模型重用代码。我们的用户控件具有视图模型,当在页面中组合多个用户控件时。淘汰赛根本行不通。我知道在制作SPA网络应用程序时,webforms可能不是典型的堆栈,但是......要求是需求....任何帮助?
答案 0 :(得分:0)
我在你的场景中做了什么(因为我过去自己做过):
拥有一个全局ViewModel对象,例如:
var _ViewModel = {}
对于每个控件,都有一个设置ViewModel部分的函数,即(这是.ascx并指向JS文件函数)
<script language="javascript">
var _ViewModel // this should be in a global.js file or something.
SetupThisViewModel()
ko.applyBindings(_ViewModel);
</script>
并在JS文件中:
// Used for user control 1
function SetupThisViewModel()
{
_ViewModel.testItem = ko.observable('');
}
// Used for user control 2
function SetupThisViewModel2()
{
_ViewModel.testItem2 = ko.observable('');
}
并且,如果您想在一个页面上使用两个用户控件,请执行以下操作:
<script language="javascript">
var _ViewModel // this should be in a global.js file or something.
SetupThisViewModel();
SetupThisViewModel2();
ko.applyBindings(_ViewModel);
</script>
这适用于您的方案。