行,所以我有這樣的觀點,到目前爲止.NET MVC 4清單,KnockoutJS數據bind'ing
function AppViewModel() {
this.title = ko.observable("@Model.Title");
this.firstName = ko.observable("@Model.FirstName");
this.lastName = ko.observable("@Model.LastName");
this.fullName = ko.computed(function() {
return this.title() + " " + this.firstName() + " " + this.lastName();
}, this);
}
@{
var jsList = Html.Raw(JsonConvert.SerializeObject(ViewBag.Countries));
}
function newViewModel() {
var theAppViewModel = new AppViewModel()
var g = ko.mapping.fromJS(theAppViewModel);
var viewModel = { vm: ko.observable([]) }
viewModel.vm = ko.mapping.fromJS(@jsList);
ko.applyBindings(g);
}
// Activates knockout.js
$(document).ready(function() {
ko.applyBindings(new newViewModel());
});
<ul style="list-style-type: none; float: left; margin-top: 20px; ">
<li>
@Html.LabelFor(model => model.Title)
<input data-bind="value: title"/>
</li>
<li>
@Html.LabelFor(model => model.FirstName)
<input data-bind="value: firstName" />
</li>
<li>
@Html.LabelFor(model => model.LastName)
<input data-bind="value: lastName" />
</li>
<li>
Full Name
<Span data-bind="text: fullName"></Span>
</li>
<li>
Coutries:
<select data-bind="foreach: vm">
<option data-bind="text: CountryName"></option>
</select>
</li>
</ul>
我的控制器有這個就可以了,
public ActionResult Index()
{
//ViewBag.Message = "KO js in mvc 4";
ViewBag.Countries = new List<Country>(){
new Country()
{
Id = 1,
CountryName = "America",
Abbreviation = "USA"
},
new Country()
{
Id = 2,
CountryName = "United Kingdon",
Abbreviation = "UK"
},
new Country()
{
Id = 3,
CountryName = "Irland",
Abbreviation = "IRL",
}
};
var vm = new PersonViewModel()
{
Id = 1,
DateOfBirth = new DateTime(1993, 01, 22),
Title = "Miss",
FirstName = "Jamie",
LastName = "Oscar",
};
return View(vm);
}
我可以返回從控制器列表像這樣的標準循環:
<select>
@foreach(var c in ViewBag.Countries)
{
<option>@c.CountryName</option>
}
</select>
但我想將結果綁定到列表Via Knockout.js。
感謝隊友,第一部分工作完美。只是看看其餘部分,但非常感謝AJM –
和其他部分已完美工作,謝謝A –