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 回答