2016-05-11 139 views
0

我想在Angularjs模塊中使用另一個控制器中的另一個方法。 我有兩個控制器一個命名爲:書籤列表控制器在bookApp模塊。 和另一個名爲ShowEachBook。 在書目控制器I創建ViewItem()方法,其可以是從View_A_book()在ShowEachBook控制器方法訪問。如何從AngularJs中的另一個控制器訪問控制器

這是我在BookApp模塊控制器

var bookApp = angular.module('bookApp', []); 

bookApp.controller('bookListCtr', function ($scope, $http) { 

    $scope.ViewItems = function ($id) { 
     $this->View_A_book($id);// This is example because I want to used View_A_book() method here 
    }; 
}) 

這裏是ShowEachBook控制器

bookApp.controller('ShowEachBook', function ($scope, $http) { 

    $scope.View_A_book = function($id){ 
     /// get book from server. 
    } 
}) 
+1

你的問題是有點難以把握的想法。部分原因是由於我認爲的語言(如果可能,請嘗試查看第一段),部分原因是我看不到您的代碼如何用於創建[mcve]。你可以檢查該鏈接,並嘗試刪除一些(多餘的)並添加一些(需要的)代碼? – Jeroen

+1

View_A_Book方法應該在服務(而不是另一個控制器)中創建,並在您的控制器中使用該服務。 –

+0

你能告訴我一些 –

回答

4

創建一個工廠。 你只需定義一次,它可以從任何控制器注入和調用。 See this article

-

做一個工廠ViewBook,並添加功能吧: 您的工廠:

angular.module('bookApp') 
    .factory('ViewBook', function() { 
     return { 
      view_a_book: function(id) { 
       //do whatever you want to. 
       return something 
      }, 
     }; 
    }); 

你的控制器:

var bookApp = angular.module('bookApp', []); 

bookApp.controller('bookListCtr', function ($scope, $http, ViewBook) { 

    $scope.ViewItems = function ($id) { 
     ViewBook.view_a_book($id); 
    }; 
}) 

你一個參考出廠添加與$scope$http,並用它來調用它。對於任何你有的控制器都可以重複。

0

分享控制器之間使用服務的信息。但對於您的使用情況,我使用ui-router兩種狀態:listlist.detail每個人都與特定的控制器。在詳細地圖的url上,單個項目list/book/[id]id並解析它從父狀態解析API請求或列表數組。

相關問題