2016-05-11 114 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请求或列表数组。

相关问题