2017-07-07 170 views
0

我用Knockoutjs模板綁定。我的JavaScript代碼:KnockoutJS模板綁定按鈕單擊

var viewModel = { 
      messages: ko.observableArray() 
     }; 
     ko.applyBindings(viewModel); 
     $.getJSON('@Url.Action("statusMessages", "Home")', function (data) { 
      viewModel.messages(data); 
     }); 

     $(".like").click(function click () { 
      var Id = $(this).data("id"); 
      $.ajax({ 
       url: '/Home/Like/' + Id, 
       type: 'POST', 
       success: function (data) { 
        alert("Beğendi"); 
       } 
      }); 
     }); 

而我的HTML代碼:

<button data-id="MessageId" class="btn btn-default like"> 
    <span data-bind="text:LikeCount"></span> 
    <i class="fa fa-thumbs-o-up"></i> 
</button> 

的。像click()功能無法正常工作。我該怎麼做?

+0

需要:

$.getJSON('@Url.Action("statusMessages", "Home")', function (data) { viewModel.messages(data); ko.applyBindings(viewModel); }); 

或適用於數據獲取(可能更多appropiate)事件監聽器看到更多的標記,使其有效地工作 - 你在用'messages'做什麼 - 迭代它們? – Alex

+0

消息喜歡Facebook狀態消息。我想,當我點擊按鈕一樣讓我controlller和像+ 1 DATEBASE –

+0

$( 「像 」)點擊(功能鍵(){VAR 編號= $(本)。數據(「 ID」); $ 阿賈克斯({ 網址: '/主頁/頂/' +編號, 類型: 'POST', 成功:功能(數據){ 警報( 「Beğendi」);} }); }); –

回答

1

我不會在這種情況下使用一個jquery事件偵聽器,如當消息數組更新他們不會有連接到他們的事件之後,由於在添加到。

純淘汰賽解決方案

<button class="btn btn-default like" data-bind="click: like.bind($data)"> 
    <span data-bind="text:LikeCount"></span> 
    <i class="fa fa-thumbs-o-up"></i> 
</button> 

型號

var MessageModel = function (data) { 
    var self = this; 
    self.MessageId = ko.observable(''); 
    self.LikeCount = ko.observable(0); 

    self.like = function() { 
     var c = self.LikeCount(); 
     self.LikeCount(c++); 
     $.ajax({ 
      url: '/Home/Like/' + self.MessageId(), 
      type: 'POST', 
      success: function (data) { 
       alert("Beğendi"); 
      } 
     }); 
    } 
}; 

隨着你like事件監聽上述不因工作不被渲染。所以,如果你想使用你原來的代碼:

應用綁定你得到數據後:

$.getJSON('@Url.Action("statusMessages", "Home")', function (data) { 
     viewModel.messages(data); 
     $(".like").click(function click () { 
      var Id = $(this).data("id"); 
      $.ajax({ 
       url: '/Home/Like/' + Id, 
       type: 'POST', 
       success: function (data) { 
        alert("Beğendi"); 
       } 
      }); 
     }); 
    }); 
+0

Thansks的答覆,但不起作用 –

+1

這100級%的作品,這是基本的淘汰賽。請更新您的消息模型的問題。見編輯答案也 –

+0

@tyler_mitchell這是不幸的是,爲什麼我放棄了試圖幫助 – Alex