2012-10-26 32 views
0

我已在模板中添加了點擊方法。knockoutjs調用點擊方法與

我不斷收到這 未捕獲的ReferenceError的錯誤:myMethod的是沒有定義 但顯然的人具有該方法

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的

+2

至少在小提琴中,你永遠不會定義「myMethod」。 – Niko

+0

你的權利我在這裏弄糊塗時就是我的解決方案。主要的問題是創建人物對象時。 http://jsfiddle.net/eiu165/hbpBd/#base person(Person($。parseJSON(data))) – eiu165

回答

2

你在你的代碼的兩個問題:

  1. 你沒有myMethodmethodCall方法,以便myMethod:myMethod應該myMethod:methodCall

  2. Altough上有一個PersonmyMethod但是您的person = ko.observable()中沒有Person對象

    由於表達式person($.parseJSON(data))只能傳入原始數據。所以,你需要的是建立一個與Personperson(Person($.parseJSON(data)))

這裏有一個固定的JSFiddle

+0

感謝偉大的人(Person($。parseJSON(data)))是製作Person對象的關鍵,謝謝 – eiu165

0

我不會通過一個功能或數據點擊。只需傳遞方法名稱並將所需的數據拖入視圖模型中即可。

data-bind="click: myMethod" 
+0

給出錯誤未捕獲錯誤:無法解析綁定。 消息:ReferenceError:未定義myMethod; 綁定值:單擊:myMethod http://jsfiddle.net/eiu165/a7uTM/5/ – eiu165

+0

我不知道'myMethod'是在哪裏定義的。 –