0

我在 with 模板中添加了一个 click 方法。

我不断收到 Uncaught ReferenceError: myMethod is not defined 但 Person 显然有该方法的错误

Person = (data) ->
    name = ko.observable(data.name)
    lname = ko.observable(data.lname)    
    myMethod = (data) -> 
        console.log 'person.myMethod' 
    test= -> 
        console.log 'person.test' 
    name:name
    lname:lname    
    myMethod:myMethod
    test:test

这是模板

<div id="wrapper">
    <h4>Person</h4>
    <ul  >
        <li data-bind="with:person">
            <span data-bind="text: name"> </span> 
            <span data-bind="text: lname"> </span>  
            <a href="#" data-bind="click: function() {   myMethod($data) }" >CLICK </a>  
        </li> 
    </ul > 
</div>

在匿名模板中,我不明白如何在 Person 对象上调用 myMethod,我尝试过类似的方法

$parent.person.myMethod
$root.person.myMethod
this.myMethod
person.myMethod

http://jsfiddle.net/eiu165/a7uTM/3/

非常感谢

编辑 修复以将方法名称添加到 myMethod

4

2 回答 2

2

您的代码中有两个问题:

  1. 你没有myMethod一个methodCall方法,所以myMethod:myMethod应该是myMethod:methodCall

  2. 虽然有一个myMethodonPersonperson = ko.observable().

    因为使用表达式person($.parseJSON(data)),您只传递原始数据。所以你需要创建一个Personwithperson(Person($.parseJSON(data)))

这里是固定的JSFiddle

于 2012-10-26T19:17:24.673 回答
0

我不会将函数或数据传递给单击。只需传递方法名称并在视图模型中提取所需的数据。

data-bind="click: myMethod"
于 2012-10-26T18:21:18.430 回答