我正在开始一个新项目,并且热衷于使用对我来说很新的KnockoutJS + Web Api,我对Web Api有很好的理解,但Knockout目前很难理解。
这是我对如何使用我的应用程序的初步想法:
LeadsController
LeadsController
有Action
名为ListLeads
,但实际上并没有返回任何数据,只是返回一个带有模板的视图来显示来自Knockout的数据。ListLeads
视图通过ajax调用我的api控制器LeadsApiController
以获取要显示的潜在客户列表我见过很多例子,但大多数都是在第一页加载时返回一些初始数据,而不是通过ajax调用。
所以我的问题是,当从ajax中检索时,如何为Knockout创建我的JavaScript viewModel,其中ajax url是使用Url.Content()
创建的。
另外,如果我需要在此ViewModel上有额外的计算值,我将如何从服务器端扩展映射的视图模型。
如果我没有很好地解释自己,请告诉我你不确定的内容,我会尝试更新我的问题,以便更明确。
答案 0 :(得分:1)
对于网址问题,请在_Layout.cshtml中将其添加到将使用它的文件之前的位置:
<script>
window._appRootUrl = '@Url.Content("~/")';
</script>
然后,您可以使用window._appRootUrl
使用字符串连接或借助URI.js等javascript库来构建网址。
对于其他计算值,您可能希望使用knockout computed observable。如果那是不可能的,或者您更喜欢在.Net中执行此操作,那么您应该能够仅使用getter创建一个属性,但是当您更新客户端上的其他属性时,如果它依赖于它们,则不会更新。