2012-08-15 54 views
0

我的觀點分配JSON數據淘汰賽視圖模型在咖啡腳本

<ul class="AvailableAdvertisers" data-bind="foreach: availableAdvertisers"> 
    <li class="advertiser" data-bind="selectedToggle: selected() == true, click: toggleSelected"> 
     <span class="name" data-bind="text: name"></span> 
    </li> 
</ul> 

咖啡腳本

class wizardPageModel 
    constructor: (@jsonObject) -> 
     @availableAdvertisers = @jsonObject.SelectedAdvertisers 

     @selectedAdvertisers = ko.observableArray() 

我想要做的是初始化JSON字符串,我得到的視圖視圖模型加載。

var testModel = @Html.Raw(Json.Encode(Model)); 

試圖在包含包含我的咖啡腳本類定義的javascript後執行applyBindings。

<script src="/Scripts/Wizard.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    var myJson = @testModel; 
    ko.applyBindings(new wizardPageModel(myJson)); 
    }); 
</script> 

在調試期間,我看到JSON字符串很好,我可以在監視窗口中看到值。 任何想法我做錯了什麼?謝謝。

編輯: 的$(文件)。就緒(函數(){被拋出異常

Microsoft JScript runtime error: Object expected

試圖取代它與

jQuery(function() {

它還是不工作,所以我做到了。

<script src="/Scripts/Wizard.js" type="text/javascript"></script> 
<script type="text/javascript"> 
var myJson = @testModel; 
ko.applyBindings(new wizardPageModel(myJson)); 
</script> 

而現在它給了我例外

wizardPageModel is undefined.

+0

'ko'對象的性質是什麼? Plase提供這個源代碼(也許在gist中) – CodeGroover 2012-08-16 06:26:44

+0

@CodeGroover,你是什麼意思?從Knockout.js教程我從來沒有想過我需要在任何地方定義它們。還是你的意思是別的? – Justin 2012-08-16 13:33:29

回答

0

你用什麼引擎編譯CoffeeScript?似乎你的wizardPageModel正在投入​​。如果您使用Mindscape Web Workbench,那麼它就是。移至Mindscape/Web Workbench Settings,找到您的.coffee並檢查Emit bare JavaScript
如果您使用控制檯工具進行編譯,請查看相應的參數。


檢測此類問題的常用方法是將斷點既wizardPageModel定義和使用ko.applyBindings(new wizardPageModel(myJson));。然後,您將能夠確定所謂的第一個問題並找出問題所在。

+0

感謝您的迴應,但我會放棄CoffeeScript,並且我自己寫了JavaScript而不是CS來製作它。 – Justin 2012-09-26 13:33:51