我想用淘汰赛和咖啡脚本维护简单的应用程序。我想添加一些Json对象,如:
[
{
Name = "",
Subscribe = "",
ScrollOfDish = [0]
},
{
Name = "",
Subscribe = "",
ScrollOfDish = [0]
}
]
这是我的代码:
class Complex
constructor: ()->
@ComplexItems = ko.observableArray()
@getAllComplex()
self = this
getAllComplex:()->
$.ajax
type: "POST"
url: "/Complex/GetAllComplex"
data: {}
dataType:"json"
contentType:"json"
success:(res)->
self.ComplexItems res // here is the problem
$(document).ready ()->
window.model = new Complex()
ko.applyBindings(model)
但我遇到了未解决类型错误的问题ComplexItems不是一个函数。当然,我尝试反向self.ComplexItems
和model.ComplexItems
- 它不起作用 - 但我想理解为什么我的例子不起作用。
答案 0 :(得分:0)
你的self = this
位于错误的位置..现在它正在使'self'指向构造函数(而不是类的任何实例......)。
应该是:
class Complex
constructor: ()->
@ComplexItems = ko.observableArray()
@getAllComplex()
getAllComplex:()->
self = this
$.ajax
type: "POST"
url: "/Complex/GetAllComplex"
data: {}
dataType:"json"
contentType:"json"
success:(res)->
self.ComplexItems res
$(document).ready ()->
window.model = new Complex()
ko.applyBindings(model)
答案 1 :(得分:0)
首先,您需要修复JSON以使用:
而不是=
。您可以删除逗号,甚至是大括号:
[
Name: ''
Subscribe: ''
ScrollOfDish: [0]
,
Name: ''
Subscribe: ''
ScrollOfDish: [0]
]
以下是视图模型代码的工作版本:
$ ->
class Complex
constructor: ->
@complexItems = ko.observableArray()
@getAllComplex()
getAllComplex: ->
$.ajax
type: 'POST'
url: '/Complex/GetAllComplex'
data: {}
dataType: 'json'
contentType: 'json'
success: (res) =>
@complexItems res
window.model = new Complex()
ko.applyBindings model
您只需使用胖箭头=>
将complexItems
绑定到右侧this
即可。我做了一些风格上的改变:
->
代替() ->
@
代替this
complexItems
)$ ->
代替$(document).ready ->
我建议您阅读this样式指南。