Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从AngularJs中的另一个控制器访问控制器_Javascript_Angularjs_Twitter Bootstrap - Fatal编程技术网

Javascript 如何从AngularJs中的另一个控制器访问控制器

Javascript 如何从AngularJs中的另一个控制器访问控制器,javascript,angularjs,twitter-bootstrap,Javascript,Angularjs,Twitter Bootstrap,我想使用Angularjs模块中另一个控制器的另一种方法。 我有两个控制器,一个名为:Booklist控制器,位于bookApp模块中。 还有一个名为的,显示每本书。 在Booklist控制器中,我创建了ViewItem()方法,可以从ShowEachBook控制器中的查看一本书()方法访问该方法 这是我在BookApp模块中的控制器 var bookApp = angular.module('bookApp', []); bookApp.controller('bookListCtr', f

我想使用Angularjs模块中另一个控制器的另一种方法。 我有两个控制器,一个名为:Booklist控制器,位于bookApp模块中。 还有一个名为的,显示每本书。 在Booklist控制器中,我创建了ViewItem()方法,可以从ShowEachBook控制器中的查看一本书()方法访问该方法

这是我在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.
  }
})
创建一个工厂。 您只需定义一次,就可以从任何控制器注入和调用它

--

制作一个factory
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
添加对工厂的引用,并使用该引用调用工厂。可以对您拥有的任何控制器重复此操作。

创建工厂。 您只需定义一次,就可以从任何控制器注入和调用它

--

制作一个factory
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
添加对工厂的引用,并使用该引用调用工厂。这可以对您拥有的任何控制器重复。

要在控制器之间共享信息,请使用服务。但是对于您的用例,我建议使用两种状态:
list
list.detail
它们中的每一个都有特定的控制器。在详细信息的url上,映射单个项目的
id
list/book/[id]
,并通过父状态的API请求或列表数组解决该问题。

要在控制器之间共享信息,请使用服务。但是对于您的用例,我建议使用两种状态:
list
list.detail
它们中的每一个都有特定的控制器。在详细信息的url上,映射单个项目的
id
list/book/[id]
,并通过父状态的API请求或列表数组解决它。

您可以将项目共有的所有方法或函数作为服务编写。在angular js中,我们可以创建两种类型的服务

  • 工厂
  • 服务
  • 在您的问题中,您只需将函数“View_A_Book”作为一个服务编写,然后将该服务注入到要使用该函数的控制器中

    请参考下面的链接了解有关服务和工厂的信息


    您可以编写作为服务的项目通用的所有方法或函数。在angular js中,我们可以创建两种类型的服务

  • 工厂
  • 服务
  • 在您的问题中,您只需将函数“View_A_Book”作为一个服务编写,然后将该服务注入到要使用该函数的控制器中

    请参考下面的链接了解有关服务和工厂的信息


    你的问题有点难理解。一部分是因为我认为语言(如果可能的话,试着回顾一下你的第一段),另一部分是因为我不知道如何使用你的代码来创建一个。您可以检查该链接并尝试剪切一些(多余的)代码和添加一些(需要的)代码吗?应该在服务(而不是另一个控制器)中创建View_A_Book方法,并在控制器中使用该服务。您可以向我展示一些使用事件相互通信的方法吗,或者在这种情况下可能使用服务!你一定是在找“广播”,你的问题有点难理解。一部分是因为我认为语言(如果可能的话,试着回顾一下你的第一段),另一部分是因为我不知道如何使用你的代码来创建一个。您可以检查该链接并尝试剪切一些(多余的)代码和添加一些(需要的)代码吗?应该在服务(而不是另一个控制器)中创建View_A_Book方法,并在控制器中使用该服务。您可以向我展示一些使用事件相互通信的方法吗,或者在这种情况下可能使用服务!你一定在找“广播”