我的观点
<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>
Coffe Script
class wizardPageModel
constructor: (@jsonObject) ->
@availableAdvertisers = @jsonObject.SelectedAdvertisers
@selectedAdvertisers = ko.observableArray()
我想要做的是使用我在视图加载时获得的JSON字符串初始化视图模型。
var testModel = @Html.Raw(Json.Encode(Model));
在我包含包含我的咖啡脚本类定义的javascript后,尝试执行applyBinding。
<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(function(){
也没用。所以我做了
<script src="/Scripts/Wizard.js" type="text/javascript"></script>
<script type="text/javascript">
var myJson = @testModel;
ko.applyBindings(new wizardPageModel(myJson));
</script>
现在它给了我异常
wizardPageModel未定义。
答案 0 :(得分:0)
您使用什么引擎编译CoffeeScript?似乎您的wizardPageModel
被放入(function() {})()
。如果您使用Mindscape Web Workbench,那么它就是。移至Mindscape/Web Workbench Settings
,找到.coffee
并查看Emit bare JavaScript
如果您使用控制台工具进行编译,那么请查看相应的参数。
检测此类问题的常用方法是将断点放在wizardPageModel
定义和使用ko.applyBindings(new wizardPageModel(myJson));
。然后,您将能够确定首先调用的内容并找出问题所在。