2013-04-25 15 views
0

我正在使用金字塔构建web应用程序,但Knockout的行为有所不同。我有一个表格:敲除在金字塔中表现不正确

 <div data-bind="with: $root.itemToAdd" style="display: none;"> 
     <form data-bind="submit: $root.addItem"> 
      <fieldset style="border: none;"> 
       <legend >Submit Item</legend>     
       <label> 
        URL <span>{</span>   
       </label>     
        <input type="text" placeholder="URL" data-bind="value: url, valueUpdate: 'afterkeydown'" /> 
       <br /> 
       <br /> 
       <label> 
        Kwip <span>{</span>   
       </label> 
        <input type="text" placeholder="Your description please!" data-bind="value: description, valueUpdate: 'afterkeydown'" /> 
       <br /> 
       <br /> 
       <button type="button" class="submitAnItem">Add Item</button> 
       <a href="#" class="exit">Cancel</a> 
      </fieldset> 
     </form> 
    </div> 

这里是视图模型:

var ViewModel = function() { 

    this.itemToAdd = { 
     url: ko.observable(""), 
     description: ko.observable("") 
    }; 

    //Behavior 
    this.addItem = function() { 
     alert('Event fired'); 
    }; 
}; 

我想不通为什么当表单提交了“的addItem”功能,不会触发。我在另一个框架中重新创建了这个功能,并且能够发起这个事件。金字塔发生了什么事情可能会干扰我的JavaScript?有人能指引我朝着正确的方向吗?

+0

如果你使用默认的mako模板,显然模板引擎与Knockouts语句相交不要忘记美元符号,它被保留为bultin mako操作符$ {} – Denis 2013-04-25 11:20:46

+0

它已经很长天? :) – XGreen 2013-04-25 13:00:23

+1

它已经。 :) – rross 2013-04-25 18:31:40

回答

3

这是因为类型按钮按钮不会触发提交事件。你需要一个按钮类型提交来触发