0

with テンプレート内にクリック メソッドを追加しました。

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 に追加するように修正されたEDIT

4

2 に答える 2

2

コードに 2 つの問題があります。

  1. あなたはメソッドを持っていないので、そうmyMethodあるべきですmethodCallmyMethod:myMethodmyMethod:methodCall

  2. myMethodonはありますが、に Person オブジェクトPersonありませんperson = ko.observable()

    person($.parseJSON(data))では生データのみを渡すためです。したがって、必要なのはPersonwithを作成することですperson(Person($.parseJSON(data)))

ここに固定がありJSFiddleます。

于 2012-10-26T19:17:24.673 に答える
0

関数やデータをクリックに渡すことはありません。メソッド名を渡して、必要なデータをビュー モデル内にプルするだけです。

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