0

私の見解

<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 文字列に問題がないことがわかり、ウォッチ ウィンドウに値が表示されます。私が間違っていることは何ですか?ありがとう。

編集: $(document).ready(function(){ は例外をスローしていました

Microsoft JScript ランタイム エラー: オブジェクトが必要です

で置き換えてみました

jQuery(関数 () {

それもうまくいきませんでした。だから私はやった

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

そして今、それは私に例外を与えます

wizardPageModel は定義されていません。

4

1 に答える 1

0

CoffeeScriptのコンパイルにどのエンジンを使用していますか?あなたwizardPageModelがに入れられているよう(function() {})()です。Mindscape Web Workbenchを使用している場合は、そうです。に移動しMindscape/Web Workbench Settings、を見つけて.coffee確認しEmit bare JavaScriptます。
コンソールツールを使用してコンパイルする場合は、このための適切なパラメータを確認してください。


wizardPageModelこのような問題を検出する一般的な方法は、定義と使用の両方にブレークポイントを設定することko.applyBindings(new wizardPageModel(myJson));です。次に、最初に何と呼ばれるかを判断し、問題を理解することができます。

于 2012-09-25T21:29:54.523 に答える