Ho questa mappatura ad eliminazione diretta che il mio array ha ricevuto dalla chiamata ajax di seguito.Limit foreach loop knockout
function InvoiceViewModel(data) {
var self = this;
self.survey = data;
}
Ajax chiamata
$.ajax({
url: 'http://localhost:43043/api/damage',
type: 'GET',
headers: { 'Accept': 'application/json' },
data: {
orderNumber: num,
category: cat
},
success:
function (data) {
var usingRoutData = document.URL;
ko.applyBindings(new InvoiceViewModel(data));
},
error: function() {
alert('failure');
}
});
mio Array
var test = {
Name: Blah,
Attributes: [
{Name: Test, Type: Photo, Year:1988},
{Name: Test, Type: Photo, Year:1988},
{Name: Test, Type: Photo, Year:1988}
]
};
Come sto forza vincolante miei dati
<div id="invoiceBodyWrapper">
<div data-bind="template: { name: 'invoice-template', foreach: surveys }">
</div>
<div class="invoiceWrapper">
</div>
<div id="completePictureWrapper" data-bind="template: { name: 'photo-template', foreach: new Array(Attributes) }"></div>
</div>
</script>
<script type="text/html" id="photo-template">
<!-- ko if: classification === 'photo' -->
<div id="pictureWrappers">
<img class="img" data-bind="attr: { src: 'http://myimagepath/download/full/' + $index()+1 }" />
</div>
<!-- /ko -->
</script>
<script src="~/Scripts/DamageInvoiceCreation.js"></script>
Ho bisogno di un modo per limitare il mio ciclo foreach di attributi solo per mostrare 2 dei 3 attributi. Ho solo trovato alcune cose su come farlo e sembrano molto complicate. Non riesco a immaginare che non ci sia un modo semplice per farlo a eliminazione diretta.
Non v'è alcun ciclo nel tuo post. Come sei vincolante per la tua visione? – Romoku
Hai visto [Knockout.js - Colonne dinamiche ma limitato a un massimo di 5 per ogni riga] (http://stackoverflow.com/q/7669946/580951) – Romoku
@Romoku molto da imparare in questa domanda, ma c'è codice sicuramente applicabile. Buon collegamento! –