2013-02-01 61 views
0

我嘗試在asp.net mvc剃鬚刀上學習knockout.js。我一直在編碼下面的代碼來學習和測試我自己 但查看方拋出我一個JS錯誤。如何在asp.net mvc Razor中正確,充分地使用Knockout.js?

「var model = @ Html.Raw(Json.Encode(Model));」錯誤:Microsoft JScript中的運行時錯誤:「fromJSON」無法獲得屬性的值:對象爲空或未定義

控制器:


    [HttpGet] 
     public ActionResult GetGift() 
     { 
      GiftModel gift = new GiftModel(); 
      gift.Price = 120; 
      gift.Title = "Test"; 

      return View(gift); 
     } 

View:  

@using System.Web.Script.Serialization; 
@model knockout1.Models.GiftModel 

@{ 
    ViewBag.Title = "GetGift"; 
} 

<h2>GetGift</h2> 

<script src="/Scripts/knockout-2.1.0.js" type="text/javascript"></script> 


<script type="text/javascript"> 

var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model)); 

var viewModel = ko.mapping.fromJSON(initialData); 

    $(document).ready(function() { ko.applyBindings(viewModel); }); 
    </script> 



<p>Title: <strong data-bind="text: Title"></strong></p> 
<p>Price: <strong data-bind="text: Price"></strong></p> 

但我改變了我的js代碼。錯誤消失。我無法理解第一個用法爲什麼不正確?我readed達林季米特洛夫的迴應:

Darin Dimitrov


<script type="text/javascript"> 
    var jsonResultData = @Html.Raw(Json.Encode(Model)); 
</script> 

我:(這是工作好。)


<script type="text/javascript"> 

    $(function() 
    { 
     var model = @Html.Raw(Json.Encode(Model)); 


// Activates knockout.js 
ko.applyBindings(model); 
    }); 

</script> 
+1

請問你能發佈確切的錯誤信息嗎?爲了使用'ko.mapping.fromJSON',您需要引用ko映射插件http://knockoutjs.com/documentation/plugins-mapping.html – nemesv

+0

Microsoft JScript運行時錯誤:'fromJSON'無法獲取值的屬性:對象是空的或未定義我改變了我的Que。 – programmerist

+1

是的,現在基於錯誤消息,我們肯定缺少映射插件的腳本引用。你可以從這裏下載:https://github.com/SteveSanderson/knockout.mapping/tree/master/build/output min和debug版本。 – nemesv

回答

1

基於錯誤信息

'fromJSON' Unable to get value of the property: the object is empty or undefined

和頁面設置你的問題是你試圖使用KO mapping插件,但不包括th e插件。

ko.mapping字符串的所有方法都是映射插件的一部分,使用它們您需要接受HTML頁面中的knockout.mapping.js文件。

你能下載映射插件嗎github

相關問題