1

更新後にテーブルを更新する方法。ここに私のサンプルコードがあります。更新をクリックしても、テーブルは更新されません。

 self.updateCategory = function(category){
        var r = confirm("Are you sure you want to update this category " + self.ID() + "?");
        if(r==true){
            //code here?
        }
    };

http://jsfiddle.net/comfreakph/2TrjF/3/

4

3 に答える 3

0

コードがないため、更新されていません:-)

self.updateCategory = function(category) {
   var r = confirm("Are you sure you want to update this category " + self.ID() + "?");
   if(r == true) {
      // Code here?
   }
};

方法を尋ねる場合は、「// Code here」セクションで、保存した ID から配列内のカテゴリを検索し、self.Name および self.Remarks プロパティからそのプロパティを設定する必要があります。

于 2013-02-20T08:11:34.657 に答える
0

これは大まかな解決策ですが、うまくいくようです> IDに基づいて元の要素を見つけ、データから作成された新しい要素に置き換えようとします。
オリジナルを見つけるためのより効率的な方法があると確信していますが、アイデアは、観察可能な配列で置換を行うことができるということです。

self.updateCategory = function (category) {
    var r = confirm("Are you sure you want to update this category " + self.ID() + "?");
    if (r == true) {
        var index = -1; 
        $.each(self.Categories(), function (i, item) {
            if (this.ID === category.ID()) {
                index = i;
            }
        });
        var original = self.Categories()[index];
        console.log(original.CreatedAt);
        category.Name = self.Name();
        category.Remarks = self.Remarks();
        category.CreatedAt = original.CreatedAt;

        self.Categories.replace(original, category);
        self.Name("");
        self.Remarks("");
        self.isSelected(true);
        }
    };

このフィドルを確認してください:http://jsfiddle.net/2TrjF/5/

于 2013-02-20T08:12:05.233 に答える
0

あなたがしなければならないことがいくつかあります。まず、ノックアウト マッピング プラグインを使用し、それを使用して Categories プロパティを設定します。

self.Categories = ko.mapping.fromJS(category);

あなたのコードは配列を観察可能にしていますが、その中の各項目ではありません。マッピング プラグインを使用して、各カテゴリとそのすべてのプロパティを監視可能にします。

次に、更新関数を更新して元のカテゴリを取得し、その値を更新する必要があります。

self.updateCategory = function (category) {
    var r = confirm("Are you sure you want to update this category " + self.ID() + "?");
    if (r == true) {
    var original = ko.utils.arrayFirst(self.Categories(), function (item)
    {
        return category.ID() == item.ID();
    });
        console.log(original.CreatedAt());
        original.Name(self.Name());
        original.Remarks(self.Remarks());

        self.Name("");
        self.Remarks("");
        self.isSelected(true);
        }
    };

値を変更すると、テーブルの行が自動的に更新されることがわかります。

jsFiddle が利用可能です

于 2013-02-20T13:40:50.953 に答える