在外面调用AngularJS控制器

时间:2015-07-09 22:49:42

标签: javascript angularjs

我试图将AngularJS表单转换为ExtJs表单。我是AngularJS和ExtJS的新手。最后我可以处理ExtJS中的视图部分,但我想我需要使用AngularJS中的控制器。有没有办法使用我从ExtjeJS控制器获得的数据? 例如,在控制器方法中执行该操作的方法是:“createAppInProject”

我如何从控制器外部调用此方法?

 angular.module('sincapp.controllers')
                .controller('AppsCtrl', ['$rootScope', '$scope', '$http', '$state', '$compile', '$timeout', '$log', '$window', 'UserService', 'AppStoreService', 'Globals', 'growl', 'AppService', 'DockingWindowsService',
                    function ($rootScope, $scope, $http, $state, $compile, $timeout, $log, $window, UserService, AppStoreService, Globals, Notifier, AppService, DockingWindowsService) {

            $scope.createAppInProject = function (name, description, version, tags, language, license, price, longdescription, note) {
                                var creator = UserService.userName;
                                AppService.createAppInProject(name, description, version, creator, tags, language, license, price, longdescription, note, $scope.selectedProject);
                            };
         }]);

这对我没有帮助:

$('#AppsCtrl').scope().createAppInProject("as","ss","sa","sas","ddasdsa","asdasd","sasd","dds","asd");

2 个答案:

答案 0 :(得分:0)

您应该使用angular.element()而不仅仅是jQuery。

angular.element($('#AppsCtrl')).scope().createAppInProject("as","ss","sa","sas","ddasdsa","asdasd","sasd","dds","asd");`

答案 1 :(得分:0)

我认为你的问题是关于混合应用程序的架构,在这种情况下你可以查看best practices of the angular JS community,找到指南和一些例子。

在我看来,您可以使用HTMLElement.dataset属性来定义要从ExtJ共享的自定义数据。可以找到the reference and example here

使用Directives对此属性进行角度访问,查找创建操纵DOM的指令,有一个示例可以观察HTMLElement的属性。一个时钟。

如果指令中有数据,您可以使用 ControllerAs ,请参阅angular styleguide, section directive and controllerAs以与角度内的其他控制器或服务共享数据。

数据也很大,我建议你可以使用localstorage,here are some good libraries