English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Knockout combinato con Bootstrap per creare UI dinamiche e gestire elenchi di prodotti

Questo articolo combina Bootstrap per creare un'applicazione relativamente completa, gestisce l'elenco dei prodotti, inclusi l'aggiunta, la rimozione e la modifica dei prodotti. 

NecessariCitazione 

<script type='text/javascript' src='http://www.see-source.com/js/knockout-2.2.0.js'></script>
<script type='text/javascript' src='http://www.see-source.com/js/jquery-1.6.2.min.js'></script>
<link href="http://www.see-source.com/bootstrap/css/bootstrap.css" rel="stylesheet"> 

Codice HTML 

<body>
<!-- Generazione dinamica dell'elenco dei prodotti -->
<table class="table table-bordered">
 <thead>
  <tr>
   <th>ID</th>
   <th>Nome del prodotto</th>
   <th>Prezzo originale</th>
   <th>Prezzo promozionale</th>
   <th>Operazione</th>
  </tr>
 </thead>
 <tbody data-bind="foreach: products">
  <tr > 
   <td> 
   <span data-bind="text: $data.Id"></span> 
   </td> 
   <td> 
   <input type="text" data-bind="value: $data.Name"/> 
   </td> 
   <td>
   <input type="text" data-bind="value: $data.Price"/> 
   </td> 
   <td> 
   <input type="text" data-bind="value: $data.ActualCost"/> 
   </td> 
   <td> 
   <input type="button" class="btn" value="Modifica" data-bind="click: $root.update"/> 
   <input type="button" class="btn" value="Elimina" data-bind="click: $root.remove"/> 
   </td> 
  </tr> 
 </tbody>
</table>
<!-- Formulario di aggiunta prodotto -->
<form class="form-horizontal" data-bind="submit:$root.create">
  <fieldset>
   <legend>Aggiungi prodotto</legend>
   <div class="control-group">
   <label class="control-label" for="input01">Nome del prodotto</label>
   <div class="controls">
    <input type="text" name="Name" class="input-xlarge">
   </div>
   </div>
   <div class="control-group">
   <label class="control-label" for="input01">Prezzo originale</label>
   <div class="controls">
    <input type="text" name="Price" class="input-xlarge">
   </div>
   </div>
   <div class="control-group">
   <label class="control-label" for="input01">Prezzo promozionale</label>
   <div class="controls">
    <input type="text" name="ActualCost" class="input-xlarge">
   </div>
   </div> 
   <div class="form-actions">
   <button type="submit" class="btn btn-primary">Salva</button>
   <button class="btn">Annulla</button>
   </div>
  </fieldset>
</form>
</body>

js代码 

<script type="text/javascript">
function ProductsViewModel() { 
 var baseUri = 'http://localhost:8080/knockout/'; 
 var self = this; 
 //self.products = ko.observableArray([{'Id':'111','Name':'联想K900','Price':'3299','ActualCost':'3000'},{'Id':'222','Name':'HTC one','Price':'4850','ActualCost':'4500'}]); 
  self.products = ko.observableArray();
 $.getJSON(baseUri + "list", self.products);//加载产品列表
 //添加产品
 self.create = function (formElement) {    
  $.post(baseUri + "add", $(formElement).serialize(), function(data) {
    if(data.success){//服务器端添加成功时,同步更新UI
    var newProduct = {};
    newProduct.Id = data.ID;
    newProduct.Name = formElement.Name.value;
    newProduct.Price = formElement.Price.value; 
    newProduct.ActualCost = formElement.ActualCost.value; 
    self.products.push(newProduct);
    }
  },"json"); 
 } 
 //Modifica il prodotto
 self.update = function (product) {
  $.post(baseUri + "update", product, function(data) {
    if(data.success){
     alert("Modifica riuscita");
    }
  },"json"); 
 } 
 //Elimina il prodotto
 self.remove = function (product) { 
  $.post(baseUri + "delete", "productID="+product.Id, function(data) {
    if(data.success){
    //Elimina anche l'UI quando il server elimina con successo
    self.products.remove(product);
    }
  },"json"); 
 } 
}
ko.applyBindings(new ProductsViewModel());
</script>

Se desideri approfondire ulteriormente, puoi fare clic qui per continuare a studiare, e ti fornisco anche 3 argomenti speciali interessanti:

Tutorial di apprendimento Bootstrap

Tutorial di applicazione pratica Bootstrap

Tutorial sull'uso degli plugin Bootstrap

Questo è tutto il contenuto dell'articolo, spero che sia utile per la tua apprendimento, e spero che sosteniate fortemente il tutorial URL.

Dichiarazione: il contenuto di questo articolo è stato raccolto da Internet, è di proprietà dei rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non possiede i diritti di proprietà, non è stato editato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, invia un'e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare