Javascript 如何从AngularJs中的另一个控制器访问控制器
我想使用Angularjs模块中另一个控制器的另一种方法。 我有两个控制器,一个名为:Booklist控制器,位于bookApp模块中。 还有一个名为的,显示每本书。 在Booklist控制器中,我创建了ViewItem()方法,可以从ShowEachBook控制器中的查看一本书()方法访问该方法 这是我在BookApp模块中的控制器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
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.
}
})
创建一个工厂。
您只需定义一次,就可以从任何控制器注入和调用它
--
制作一个factoryViewBook
,并将您的功能添加到其中:
您的工厂:
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
添加对工厂的引用,并使用该引用调用工厂。可以对您拥有的任何控制器重复此操作。创建工厂。
您只需定义一次,就可以从任何控制器注入和调用它
--
制作一个factoryViewBook
,并将您的功能添加到其中:
您的工厂:
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中,我们可以创建两种类型的服务
您可以编写作为服务的项目通用的所有方法或函数。在angular js中,我们可以创建两种类型的服务
你的问题有点难理解。一部分是因为我认为语言(如果可能的话,试着回顾一下你的第一段),另一部分是因为我不知道如何使用你的代码来创建一个。您可以检查该链接并尝试剪切一些(多余的)代码和添加一些(需要的)代码吗?应该在服务(而不是另一个控制器)中创建View_A_Book方法,并在控制器中使用该服务。您可以向我展示一些使用事件相互通信的方法吗,或者在这种情况下可能使用服务!你一定是在找“广播”,你的问题有点难理解。一部分是因为我认为语言(如果可能的话,试着回顾一下你的第一段),另一部分是因为我不知道如何使用你的代码来创建一个。您可以检查该链接并尝试剪切一些(多余的)代码和添加一些(需要的)代码吗?应该在服务(而不是另一个控制器)中创建View_A_Book方法,并在控制器中使用该服务。您可以向我展示一些使用事件相互通信的方法吗,或者在这种情况下可能使用服务!你一定在找“广播”