2015-01-10 4 views
1

У меня есть угловой контроллер, который создается с ресурсом $ (например,/rest/book), и он работает нормально.

Я собираюсь разрешить контроллеру работать с другим ресурсом $ (например,/rest/RecommendedTitle), и я не уверен, как это сделать.

Это как мой контроллер в настоящее время выглядит следующим образом:

var dashboard = angular.module('dashboard', ['ngResource', 'ngRoute']); 

dashboard.factory("Post", function($resource) { 
    return $resource("/rest/book/:id"); 
}); 

dashboard.controller("DashboardCtrl", function($scope, Post) { 
    // handle retriving a list 
    Post.query(function(data) { 
     $scope.books = data; 
    }); 

    // user selected on a book 
    $scope.bookSelectionListener = function(book) { 
     $scope.selectedBook = book; 

     console.log("Selected book id: " + $scope.selectedBook.bookId.S); 

     console.log("Going to fetch similar titles which is in another table based on the book id"); 

     // call another $resource restful api to get recommended title 
    }; 
}); 
+1

Конечно. Просто создайте еще один завод. –

+1

Да. Но я бы назвал ваши фабрики лучше. Один называется «Книги», а один называется «RecommendedTitles» вместо «Post». Затем они просто перешли в api url к ресурсу $ на каждой фабрике, как вы это сделали –

+0

@WayneEllery Получил это спасибо. –

ответ

2

Ну так же, как вы уже сделали, есть еще один завод, создавая новый $resource и ввести его в контроллере:

var dashboard = angular.module('dashboard', ['ngResource', 'ngRoute']); 

dashboard.factory("Post", function($resource) { 
    return $resource("/rest/book/:id"); 
}); 

dashboard.factory("Whatever", function($resource) { 
    // you should probably initialize some particular method depending on your backend here 
    return $resource("/rest/whatever/:id"); 
}); 

dashboard.controller("DashboardCtrl", function($scope, Post, Whatever) { 
    // handle retrieving a list 
    Post.query(function(data) { 
     $scope.books = data; 
    }); 

    // user selected on a book 
    $scope.bookSelectionListener = function(book) { 
     $scope.selectedBook = book; 

     console.log("Selected book id: " + $scope.selectedBook.bookId.S); 

     console.log("Going to fetch similar titles which is in another table based on the book id"); 

     // call another $resource restful api to get recommended title 

     Whatever.query({bookId : book.id}, function(data) { 
      $scope.similarBooks = data; 
     }); 

    }; 
}); 
3

Близкие по теме ресурсы всегда можно сгруппировать на заводе.

dashboard.factory("Post", function($resource) { 
    return { 
      books:$resource("/rest/book/:id"), 
      recommendedTitles:$resource("/rest/recommendedTitles") 
    }; 
}); 

А затем в контроллер, ресурс доступен для использования:

Post.books.query() 
Post.recommendedTitles.query() 
Смежные вопросы