![](/img/trans.png)
[英]How can I drop bower and use npm for client-side in ASP.NET Core 1.0?
[英]How can I generate client-side view models for knockout in an ASP.NET MVC project?
我目前正在开发一个ASP.NET MVC解决方案,最近又推出了Knockout(MVVM JS库)和Wijmo(一组jQuery UI小部件)。
随着Knockout的引入,我还需要在客户端有模型,所以为此我将序列化C#ViewModel并使用data-model="@Model.ToJson()"
将其附加到视图中。 这允许我从JS检索模型并对一切应用一些客户端的爱。
但是,knockout需要一切都是可观察的,所以我需要声明一个单独的客户端ViewModel并映射数据模型对象的所有内容。 这感觉非常像重复的努力,我想以某种方式避免它。
我希望有人有一个共享的工具或技术,这将允许我直接从服务器渲染淘汰ViewModel。 可能的解决方案包括:
我希望解决方案是通用的和自动的,因为我目前用手工输入可观察的客户端视图模型的方法实在是太没用了。
你是怎么解决这个问题的?
根据他们的教程,它只是一个简单的.map
函数
如果这是ViewModel
function Task(data) {
this.title = ko.observable(data.title);
this.isDone = ko.observable(data.isDone);
}
此函数从服务器获取数据,它使用.map
函数将服务器数据直接注入VM
// Data
var self = this;
self.tasks = ko.observableArray([]);
// Load initial state from server, convert it to Task instances, then populate self.tasks
$.getJSON("/tasks", function(allData) {
var mappedTasks = $.map(allData, function(item) {
return new Task(item)
});
self.tasks(mappedTasks);
});
对于ko映射http://knockoutjs.com/documentation/plugins-mapping.html
对于自动绑定,这是一个例子
https://groups.google.com/forum/#!msg/knockoutjs/IJTx37UXQVw/UTrWdEK1C-oJ
试试这个适用于visual studio的插件http://visualstudiogallery.msdn.microsoft.com/32c15a80-1c54-4e96-a83f-7cd57573a5d2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.