2014-10-07 77 views
0

我正在为基于jQuery的系统编写AngularJS应用程序。每个应用程序都需要用下面的代码启动。在jQuery函数中包装Angular应用程序

我如何得到这个与我的AngularJS代码一起工作?

我试图将我的整个Angular应用程序包含在函数appStart()中,但是这不起作用。有关如何解决这个问题的任何想法?

初始化JS:

(function() { 
    function appStart() { 
} 

function genericError() { 
    console.error('Something went wrong'); 
} 

TT.native.init() 
.done(appStart) 
.fail(genericError); 
})(); 

我AngularJS应用:

var app = angular.module('myApp', ['ui.sortable', 'ui.router']); 

app.config(function ($stateProvider, $urlRouterProvider) { 

    $urlRouterProvider.otherwise('/specs'); 

    $stateProvider 
    .state('specs', { 
     url: '/specs', 
     templateUrl: 'specs.html', 
     controller: 'SpecsController' 
    }) 
    .state('editSp... 
+0

尝试angular.bootstrap(angular.element(“body”)[0],['MyApplication']); – originof 2014-10-07 13:00:10

回答

2

,因为我用它,但这个应该工作很长一段时间。这是Angular的手动引导,所以在你的索引文件中没有ng-app。

(function() { 
    $(document).ready(function() { 
     if (TT) { 
      TT.native.init().done(function() { 
       angular.bootstrap(document, ['myTickTailApp']); 
      }).fail(function() { 
       // Error handling if TickTail fails to init ... 
      }); 
     } else { 
      throw new Error('Cannot start app, tt.js not loaded'); 
     } 
    }); 
})(); 
+0

谢谢!我会将整个Angular应用放在函数appStart中吗?或只是第一行?那么我在哪里放置代码的其余部分呢?是否可以像我的例子那样保持Tictail代码的结构?否则他们有可能不会批准该应用。 – peta 2014-10-08 07:59:52

+0

您可以将角度函数放置在单独的文件中,就像常规应用程序一样,但不要将ng-app放在文档的任何位置。 'angular.bootstrap()'手动为你做了这部分(以及什么时候加载了所有东西)。 – Zlatko 2014-10-08 08:12:54

+0

在Github上放一些代码,你可能会用到,或者看看有什么想法:https://github.com/lowebackstrom/tictail-angular-boilerplate – 2014-10-08 08:47:33