SORU
7 Kasım 2012, ÇARŞAMBA


Kaynak Dinlendirici bir örnek AngularJS $

Kullanın benim Dinlendirici servisi, hala üzerinde çalışıyorum) web çağrı için kaynak $isterim ama eğer benim AngularJS alırsam önce senaryoyu doğru öğrenmek istiyorum.

DTO var yapılacak: {id, order, content, done}

:cmd api/1/todo/reset veritabanı todo tablo temizlemek için çağırabilirim.

Burada benim anladığım açıklama kod:

function TodoService($resource) {
    var src = $resource('api/1/todo/:id:cmd',
              {id: "@id", cmd: "@cmd"}, //parameters default
              {
                ListTodos: { method: "GET", params: {} },
                GetTodo: { method: "GET", params: { id: 0 } },                            
                CreateTodo: { method: "POST", params: { content: "", order: 0, done: false } },
                UpdateTodo: { method: "PATCH", params: { /*...*/ } },
                DeleteTodo: { method: "DELETE", params: { id: 0 } },
                ResetTodos: { method: "GET", params: { cmd: "reset" } },
              });

    //Usage:

    //GET without ID
    //it calls -> api/1/todo
    src.ListTodos();

    //GET with ID
    //it calls -> api/1/todo/4
    src.GetTodo({ id: 4 });

    //POST with content, order, done
    //it calls -> api/1/todo
    src.CreateTodo({ content: "learn Javascript", order: 1, done: false });

    //UPDATE content only
    //it calls -> api/1/todo/5
    src.UpdateTodo({ id: 5, content: "learn AngularJS" }); 

    //UPDATE done only
    //it calls -> api/1/todo/5
    src.UpdateTodo({ id: 5, done: true });

    //RESET with cmd
    //it calls -> api/1/todo/reset
    src.ResetTodos();
}

Emin değilim belli bir şey YAMA yöntemi, her şeyi restore etmek istemiyorum, ben sadece tek bir alanı güncelleme yapabilirim? Bu kod parçası oluşturarak, doğru muyum?

CEVAP
7 Kasım 2012, ÇARŞAMBA


kaynak, son nokta verileri almak, işlemek ve geri göndermek gerekiyordu. $ Varbazıorada, ama gerçekten yapamadı ne için yararlanarak değilsin.

İyi kaynak özel yöntemleri var, ama OOTB ile birlikte geliyor serin özellikleri kaçırmak istemezsin.

EDİTBu aslında oldukça iyi, ama $kaynak döner ile bazı funky şeyler yapar açıkladım sanmıyorum. Todo.() almak ve Yapılacaklar.() sorgudönüşkaynak nesneveiçine geçirirgeri aramabu tamamlandığı zaman için. Diyebilirsin yani o sahneleri Kaydet $arkasında vaatlerle süslü şeyler yok () () geri gerçekten yangınlar ve bekleyecektir. Muhtemelen iyi bir söz içinde yapılan() ya da geri arama yöntemi.

Standart kullanın

var Todo = $resource('/api/1/todo/:id');

//create a todo
var todo1 = new Todo();
todo1.foo = 'bar';
todo1.something = 123;
todo1.$save();

//get and update a todo
var todo2 = Todo.get({id: 123});
todo2.foo  = '!';
todo2.$save();

//which is basically the same as...
Todo.get({id: 123}, function(todo) {
   todo.foo  = '!';
   todo.$save();
});

//get a list of todos
Todo.query(function(todos) {
  //do something with todos
  angular.forEach(todos, function(todo) {
     todo.foo  = ' something';
     todo.$save();
  });
});

//delete a todo
Todo.$delete({id: 123});

Aynı şekilde, OP yazdıklarını durumunda, kaynak bir nesne almak ve özel fonksiyonlar (teorik olarak) herhangi bir çağrı yapar:

var something = src.GetTodo({id: 123});
something.foo = 'hi there';
something.UpdateTodo();

Gittim ve ancak benim kendi icat önce OOTB uygulama ile deneme istiyorum. Ve eğer varsayılan özellikleri kaynağın $kullanmadığınız bulursanız, muhtemelen sadece kendi $http kullanıyor olması gerekir.

Güncelleme: Açısal 1.2 ve Vaat ediyor

Açısal olarak 1.2, kaynakları destek vaat ediyor. Ama bu davranış, geri kalanı değiştirmediler.

$resource ile kaldıraç sözler için döndürülen değeri $promise bu özelliği kullanmak gerekir.

Örnek sözler kullanarak

var Todo = $resource('/api/1/todo/:id');

Todo.get({id: 123}).$promise.then(function(todo) {
   // success
   $scope.todos = todos;
}, function(errResponse) {
   // fail
});

Todo.query().$promise.then(function(todos) {
   // success
   $scope.todos = todos;
}, function(errResponse) {
   // fail
});

Söz özellik $üstünde geri döndü de aynı değerleri üzerinde bir özellik olduğunu unutmayın. Tuhaf alabilirsiniz:

Bu eşdeğerdir

var todo = Todo.get({id: 123}, function() {
   $scope.todo = todo;
});

Todo.get({id: 123}, function(todo) {
   $scope.todo = todo;
});

Todo.get({id: 123}).$promise.then(function(todo) {
   $scope.todo = todo;
});

var todo = Todo.get({id: 123});
todo.$promise.then(function() {
   $scope.todo = todo;
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Living Waters

    Living Water

    9 AĞUSTOS 2006
  • MisterBrightside

    MisterBright

    24 Mart 2006