我们正在为我们的MVC客户端编写一个新的基础架构,我们正在努力使它们开发人员不需要太多Javascript(当前的开发池主要是基于桌面的)
我到目前为止为我们的淘汰脚本所做的是创建一个扩展方法,它基于使用反射的模型基本生成所有淘汰的东西..这对于没有计算值的简单模型非常好,并且到目前为止工作很好。
所以例如,说我们有这个类
public class AppViewModel
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
将生成以下内容并将其添加到视图
function AppViewModel() {
this.firstName = ko.observable('Bob');
this.lastName = ko.observable('Smith');
}
我真正喜欢做的是支持模型中的计算值...但我只是想办法做到这一点
所以
public FullName()
{
return this.FirstName + " " + this.LastNAme
}
会产生类似
的内容 this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
所以只是为了说清楚 - 我要做的是根据我的模型生成计算值。
感谢您的帮助
欢呼声。 STE。
答案 0 :(得分:4)
也许它会有所帮助http://knockoutmvc.com/
答案 1 :(得分:4)
除了上面提到的Pavel之外,还有一个很好的例子显示你的场景为'T':
http://knockoutmvc.com/HelloWorld
这是页面的转录:
<强>型号:强>
public class HelloWorldModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Expression<Func<string>> FullName()
{
return () => FirstName + " " + LastName;
}
}
<强>剃刀:强>
@using PerpetuumSoft.Knockout
@model KnockoutMvcDemo.Models.HelloWorldModel
@{
var ko = Html.CreateKnockoutContext();
}
<p>First name: @ko.Html.TextBox(m => m.FirstName)</p>
<p>Last name: @ko.Html.TextBox(m => m.LastName)</p>
<h2>Hello, @ko.Html.Span(m => m.FullName())!</h2>
@ko.Apply(Model)
<强>控制器:强>
public class HelloWorldController : BaseController
{
public ActionResult Index()
{
InitializeViewBag("Hello world");
return View(new HelloWorldModel
{
FirstName = "Steve",
LastName = "Sanderson"
});
}
}
自动生成的Html:
<p>
First name:
<input data-bind="value : FirstName" /></p>
<p>
Last name:
<input data-bind="value : LastName" /></p>
<h2>
Hello, <span data-bind="text : FullName"></span>!</h2>
<script type="text/javascript">
var viewModelJs = { "FirstName": "Steve", "LastName": "Sanderson" };
var viewModel = ko.mapping.fromJS(viewModelJs);
viewModel.FullName = ko.computed(function () {
try {
return this.FirstName() + ' ' + this.LastName();
}
catch (e) { return null; };
}, viewModel);
ko.applyBindings(viewModel);
</script>
答案 2 :(得分:0)
答案 3 :(得分:0)
尝试淘汰JS官方示例:http://knockoutjs.com/examples/
Knockout JS教程:http://learn.knockoutjs.com/
以上链接将帮助您学习淘汰赛JS。
谢谢, -Naren