2016-08-16 11 views
1

ユーザーがボタンをクリックしたときに呼び出される関数に値を送信します。ここでクリックバインディングノックアウトにパラメータを送信する方法

は、ビューモデルで、ここで

define(["knockout", "text!./index.html", "../../components/users/users"], function (ko, indexTemplate, userModel) { 
function indexViewModel(params) { 
    var self = this; 
    var id = 1; 
    self.users = ko.observableArray([]); 
    $.ajax({ 
     url: 'server/getUsers.php', 
     type: 'post', 
     data: {"data":id}, 
     success: function (result) { 
      var row = JSON.parse(result) 
      for(var i=0;i<row.length;i++){ 
       self.users.push(new userModel.userModel(row[i]["name"],row[i]["time"],row[i]["id"])); 
      } 
     } 
    }); 
    self.removeUser = function (user) { 
     alert(user); 
    }; 
    return self; 
    } 
return { viewModel: indexViewModel, template: indexTemplate }; 
}); 

は、htmlページ、

<!-- ko foreach: users --> 
<div class="col-md-3 col-sm-6"> 
    <div class="panel panel-default"> 
     <div class="panel-body"> 
      <div class="" style="height:180px;"></div> 
     </div> 
     <div class="panel-footer"> 
      <button class="btn btn-danger" data-bind="click: removeUser.bind($data,$data.id)">Remove</button> 
     </div> 
    </div> 
</div> 
<!-- /ko --> 

である私は、ユーザーがボタンをクリックしたときの$ data.idを取得したいです。 removeUser.bind($ data、$ data.id)を試しましたが、エラーがあります。 removeUserが定義されていません。

答えて

1

removeUserが親モデルにあるため定義されていないので、$parent.removeUserを試してください。 選択した項目を配列から削除するだけでよい場合。それからちょうど

<!-- ko foreach: users --> 
<div class="col-md-3 col-sm-6"> 
    <div class="panel panel-default"> 
     <div class="panel-body"> 
      <div class="" style="height:180px;"></div> 
     </div> 
     <div class="panel-footer"> 
      <button class="btn btn-danger" data-bind="click: $parent.removeUser">Remove</button> 
     </div> 
    </div> 
</div> 
<!-- /ko --> 

とモデルに

define(["knockout", "text!./index.html", "../../components/users/users"], function (ko, indexTemplate, userModel) { 
function indexViewModel(params) { 
    var self = this; 
    var id = 1; 
    self.users = ko.observableArray([]); 
    $.ajax({ 
     url: 'server/getUsers.php', 
     type: 'post', 
     data: {"data":id}, 
     success: function (result) { 
      var row = JSON.parse(result) 
      for(var i=0;i<row.length;i++){ 
       self.users.push(new userModel.userModel(row[i]["name"],row[i]["time"],row[i]["id"])); 
      } 
     } 
    }); 
    self.removeUser = function() { 
    self.users.remove(this); 
    }; 
    return self; 
    } 
return { viewModel: indexViewModel, template: indexTemplate }; 
}); 
+0

を次のようにしてみてください、あなたは$の根、$親、$データの詳細を説明することはできますか? – JMA

+0

@JohnArellano次のリンクhttp://knockoutjs.com/documentation/binding-context.htmlには多量の文書があります – Ramki

関連する問題