私はオンラインで検索していましたが、私は観測可能な配列に並べ替え作業を行うことはできないようです。私はどこかではなく、必ず間違いなく間違っている場合は、ここではコードです:ノックアウトのjsとソートの問題
var availableProducts = [{"Id":"1","Description":"Product 1","Rate":2956.00},{"Id":"3","Description":"Product 2","Rate":1518.00},{"Id":"2","Description":"Product 3","Rate":750.00}];
function productViewModel() {
var self = this;
self.products = ko.observableArray();
}
var productDetails = new productViewModel();
$(document).ready(function() {
productDetails.products = (availableProducts);
ko.applyBindings(productDetails, document.getElementById("product-edit"));
}
そしてHTMLは次のようになります。だから、IDが順番1、3、2である見ることができるように
<tbody data-bind="foreach: sortedProducts">
<tr>
<td><span data-bind="text: Description"></span></td>
<td><span data-bind="currency: Rate"></span></td>
</tr>
</tbody>
私はそれらを並べ替えて順番に表示したいと思いますが、商品を並べ替えることはできません。私は、これは動作しませんでした私のViewModel
にself.sortedProducts = function() {
return self.products().sort(function (a,b) {
return a.Id < b.Id ? -1 : a.Id > b.Id ? 1 : 0;
});
を以下のように入れてみました、私はproductDetails
でself
の交換を除いて、「$(ドキュメント).ready(...)」に同一のコードを追加し、その後試みたが、うまくいきませんでした。私はデータをソートするためにボタンを呼び出させたくないので、それらを提示する前にソートしておきたい。
は 'のvar availableProducts'は、私はko.computed'私 'ko.observableArray()'に直接データを置くことはできませんが、( ...)実際に働いた!何らかの理由で私がko.computedを試したと思ったが、正しく適用しなかったと思う。あなたの現在の '' .sort(function()) ''の修正は 'a、b'変数を渡すのを忘れてしまったので、' .sort(function(a、b)) 'のように見えるはずです。 – zuboje
@zuboje:コードを盲目的にコピーするのは良い考えではないことを証明してくれてありがとうございます。 – mfeineis