以下の例は、Json を使用して取り込まれる監視可能な配列を示しています。これにより、「タイプ」に基づいて結果を 2 つのリストにフィルター処理できます。
ajax 呼び出しからまったく同じ Json をロードしようとするまで、これはすべて正常に機能します。
奇妙なことは、スクリプトにアラートを入れると、正常に動作することです...
<h2>Brand</h2>
<ul id="list-dimensions" data-bind="foreach: filteredDimensions('BRAND')">
<li>
<div class="item">ID</div> <span data-bind="text: $data.id"</span>
</li>
</ul>
<h2>Area</h2>
<ul id="list-dimensions" data-bind="foreach: filteredDimensions('AREA')">
<li>
<div class="item">ID</div> <span data-bind="text: $data.id"</span>
</li>
</ul>
function ProductDimensionsViewModel () {
var self = this;
self.dimensions = ko.observableArray();
var baseUri = 'api/product_dimensions.php';
/*$.getJSON(baseUri, function(data){
success: self.dimensions = data;
});*/
$.ajax({
type: 'GET',
url: baseUri,
data: {},
context: this,
success: function(data) {
self.dimensions = data
},
dataType: 'json'
});
self.filteredDimensions = function(type) {
return $.map(self.dimensions, function(dimension) {
if (dimension.type == type) {
return dimension;
}
});
}
}
ko.applyBindings(new ProductDimensionsViewModel());