Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Durandal i Knockout

[es] :: Javascript i AJAX :: Durandal i Knockout

[ Pregleda: 4013 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Durandal i Knockout18.07.2015. u 17:08 - pre 79 meseci
Pozdrav!

aplikacija je rađena u VS sa Durandal i Knockout -om...

Nakon dobijanja podataka preko Ajaxa neće da ispiše podatke u Views..( možda jednostavno ne vidim gde grešim...možda sam nešto zaboravio ).

Ako neko ima predlog molim za pomoć...

Hvala!!

U ViewModels je sledeće:

Code:
define(function () {
    var ctor = function () {
        this.naslov = 'Ovo je naslov za DRUGI!';
       
        this.Id_dobavljaca = ko.observable("");
        this.NazivDobavljaca = ko.observable("");
        this.Aktivan = ko.observable("");


        var Product = {
            Id_dobavljaca: self.Id_dobavljaca,
            NazivDobavljaca: self.NazivDobavljaca,
            Aktivan: self.Aktivan
        };

        this.Product = ko.observable();
        this.Products = ko.observableArray(); 

        self = this;

        $.ajax({
            url: "/Durandal/VratiDobavljace",
            cache: false,
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            data: {},
            success: function (data) {
                self.Products(data);                  
            }
        });
    };   
   

    return ctor;
});


A u Views je:

Code:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title style="float:right;">drugi</title>
</head>
<body>

    <s data-bind="text:  Products.length"></s>

    <table id="empl" ">
    <thead>
        <tr>
            <th>
                Id_dobavljaca
            </th>
            <th>
               NazivDobavljaca
            </th>
            <th>
                Aktivan
            </th>
            
        </tr>
    </thead>    


    <tbody data-bind="foreach: Products() ">
        <tr>
            <td data-bind="value: Id_dobavljaca">
            </td>
            <td data-bind="value: NazivDobavljaca">
            </td>
            <td data-bind="value: Aktivan">
            </td>
           
            <td>
                <button data-bind="click: $root.edit">
                    Edit</button>
                <button data-bind="click: $root.delete">
                    Delete</button>
            </td>
        </tr>
    </tbody>
</table>
</body>
</html>
 
Odgovor na temu

ssi

Član broj: 305920
Poruke: 299
*.static.sbb.rs.



+368 Profil

icon Re: Durandal i Knockout20.08.2015. u 10:26 - pre 78 meseci
Prvo pogledaj

http://knockoutjs.com/documentation/plugins-mapping.html


Knockout Mapping plugin. Mapira modele <-> JSON.

I radi ... odlicno, bas to sto trazis.


Par kritika:

koristi benefite require.js-a

Odvoji view modele i modele u posebne file-ove. Prouci dokumentaciju.

Code:

model.js:

function Product(data){
    var self = this;
    
    self.Id_dobavljaca = ko.observable();
    
    self.NazivDobavljaca = ko.observable();
    
    self.Aktivan: = ko.observable();
    
    ko.mapping.fromJS(data, {}, self);


viewmodel.js:

function ProductViewMode(){
    var self = this;
    
    self.CurentProduct = ko.observable();
    
    self.LoadProduct = function(){
        $.ajax({
                  url: "/Durandal/VratiDobavljace",
                  cache: false,
                  type: 'GET',
                  contentType: 'application/json; charset=utf-8',
                  data: {},
                 success: self.LoadProductSucess
        });
    }
    
    self.LoadProductSucess = function(data){
        self.CurentProduct(new Product(data);
    }    
}



Drugo, pojednostavi sebi zivot i nauci i promise i q.js na primer. Tako da ne napravis tzv. callback hell.

Trece, ovo moze jos bolje.

Code:

model.js:

function Product(data){
    var self = this;
    
    self.Id_dobavljaca = ko.observable();
    
    self.NazivDobavljaca = ko.observable();
    
    self.Aktivan: = ko.observable();
    
    ko.mapping.fromJS(data, {}, self);


viewmodel.js:

function ProductViewMode(){
    var self = this;
    
    self.CurentProduct = ko.observable();
    
    self.LoadProduct = function(){
        return VratiDobavljace()
            .then(self.LoadProductSucess);
    }
    
    self.LoadProductSucess = function(data){
        self.CurentProduct(new Product(data));
                return true;
    }    
}

service.js:

 function VratiDobavljace() {
        var url = "/Durandal/VratiDobavljace",
        var callData = {};

        return Q($.ajax({
            url: url,
            type: "POST",
            data: callData,
            dataType: "json",
            contentType: "application/json; charset=utf-8",            
            cache: false
        })).fail(function (reason) {
            //ovde moze neki log sistem koji ce korisniku prikazati gresku 
            throw new Error(reason.message);
        });
    }


Ovde n isam koristioobservableArray vec sam pretpostavio da ajax vraca samo jednoga dobavljaca.
Mapping plugin moze da mapira i array-e.

[Ovu poruku je menjao ssi dana 20.08.2015. u 11:42 GMT+1]

[Ovu poruku je menjao ssi dana 20.08.2015. u 11:45 GMT+1]
 
Odgovor na temu

patak_daca

Član broj: 72199
Poruke: 418
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Durandal i Knockout23.08.2015. u 19:36 - pre 78 meseci
Pozdrav!

Hvala puno!

Patak
 
Odgovor na temu

ssi

Član broj: 305920
Poruke: 299
*.dynamic.sbb.rs.



+368 Profil

icon Re: Durandal i Knockout23.08.2015. u 20:00 - pre 78 meseci
Citat:
patak_daca: Pozdrav!

Hvala puno!

Patak


Molim.

Vec neke 2 godine radim na durandal aplikacijama :) i .net backendu.
Tako da ako ti nesto treba ... pitaj.
 
Odgovor na temu

[es] :: Javascript i AJAX :: Durandal i Knockout

[ Pregleda: 4013 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.