我在CS上了一堂课:
class Model
constructor: (objectParams) ->
@object = ##object
###constructor
baseObject: => {}
validate: ko.computed =>
console.log ko.toJS @object
问题在于'validate',它是一个原型属性,其中ko.computed函数的绑定上下文应该是构造函数,但要编译为此:
Model.prototype.validate = ko.computed(function() {
return console.log(ko.toJS(Model.object));
});
我希望将其绑定到构造函数,但粗箭头=>似乎仅以此方式工作:
property: () =>
这样就行不通了
validate: =>
ko.computed => console.log ko.toJS @object
因为无法在函数中定义ko.computed
我该如何解决?
最佳答案
将函数绑定到实例并对其进行“预处理”,如下所示
pipe = (fn)->
return ->
fn.apply(@, arguments)
class A
foo: pipe -> @bar()
bar: -> ...
从管道函数(在您的情况下为ko.computed)中返回另一个函数,该函数包装您的初始函数并通过.apply调用它。
无需粗线箭头,因为您拨打的电话带有@
关于javascript - CoffeeScript类和绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13176414/