jeudi 29 janvier 2015

Converting MVC Model to Knockout JS ViewModel


I am trying to convert my mvc model to knockout viewmodel here:


Model



public class MyModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
.
.
.
public List<MyList1> MyListOne{ get; set; }
public List<MyList2> MyListTwo{ get; set; }
}


Controller



public ActionResult Index()
{
MyModel myModel;

var myServiceObject = myServiceManager.GetMyModelByUser(user);

myModel = new MyModel
{
Id = myServiceObject.Id,
.
.
.
.
};

return View(myModel);
}


View Model



var DynamicModelLoading = function (data) {
var self = this;

ko.mapping.fromJS(data, {}, self);

};


Helper



public static string ToJson(this object obj)
{
JsonSerializerSettings serializerSettings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};

return JsonConvert.SerializeObject(obj, Formatting.None, serializerSettings);
}


View



<script src="~/Scripts/jquery-2.1.1.min.js"></script>
<script src="~/Scripts/knockout-3.2.0.js"></script>
<script src="~/Scripts/knockout.mapping-latest.js"></script>



<script type="text/javascript">
var viewModel;

$(function () {
var viewModel = new DynamicModelLoading(@Html.Raw(Model.ToJson()));
ko.applyBindings(viewModel);
});
</script>

<div class="f_name" data-bind="text: firstName"></div>
<div class="f_name" data-bind="text: lastName"></div>


ToJson() returns data. But while binding it I am not getting any error and no data either. I am missing something here but not sure what it is.





Aucun commentaire:

Enregistrer un commentaire