相关疑难解决方法(0)

我应该使用哪种方法手动引导我的AngularJS?

我见过以下内容:

angular.bootstrap(document, ['TodoApp']);
angular.bootstrap(angular.element("body")[0], ['TodoApp']);
Run Code Online (Sandbox Code Playgroud)

AngularJS文档也提到了我并不真正理解的内容.

   angular.element(document).ready(function() {
     angular.bootstrap(document);
   });
Run Code Online (Sandbox Code Playgroud)

这些方法有什么区别吗?特别是Angular文档的最后一个方法是什么?一个比另一个更好用吗?

angularjs

43
推荐指数
1
解决办法
3万
查看次数

如何在Angular的Run块中等待promise?

我真的需要在bootstrapping angular之前加载一些数据.出于这个原因,我创建了一个run块/在这个run块中我调用了一个服务上的方法,该服务从服务器加载一些数据.由于这是一个异步调用,JavaScript会进一步执行,这会导致我的应用程序中出现一些未定义的对象.

我正在使用路线,但不能选择使用该resolve物业.

有人能提供一个关于如何等待承诺在run块中准备好的解决方案吗?

编辑:

感谢给定的答案,我通过手动引导角度来解决它:

$(document).ready(function () {
    $.ajax('/Data/GetDropdownData', {type:'POST'}).done(function (response) {
        app.run(['ListService',  function (ListService) {
            ListService.setData(response);
        }])

        angular.bootstrap(document, ["sma"]);
    })
})
Run Code Online (Sandbox Code Playgroud)

angularjs

27
推荐指数
2
解决办法
2万
查看次数

AngularJS:异步初始化过滤器

我在尝试使用异步数据初始化过滤器时遇到了麻烦.

过滤器非常简单,它需要将路径转换为name,但为此需要一个对应的数组,我需要从服务器获取.

在返回函数之前,我可以在过滤器定义中执行操作,但异步方面可以防止这种情况发生

angular.module('angularApp').
  filter('pathToName', function(Service){
    // Do some things here

    return function(input){
      return input+'!'
    }
  }
Run Code Online (Sandbox Code Playgroud)

使用承诺可能是可行的,但我对角度载荷的过滤方式没有任何清楚的了解.这篇文章解释了如何通过服务实现这样的魔力,但是有可能对过滤器做同样的事情吗?

如果有人对如何翻译这些路径有更好的了解,我会全力以赴.

编辑:

我尝试了承诺approch,但有些事情是不对的,我没看到:

angular.module('angularApp').filter('pathToName', function($q, Service){

  var deferred = $q.defer();
  var promise = deferred.promise;

  Service.getCorresp().then(function(success){
    deferred.resolve(success.data);
  }, function(error){
    deferred.reject();
  });

  return function(input){
    return promise.then(
      function(corresp){
        if(corresp.hasOwnProperty(input))
          return corresp[input];
        else
          return input;
      }
    )
  };
});
Run Code Online (Sandbox Code Playgroud)

我对承诺并不是很满意,是否正确使用它们?

javascript asynchronous filter angularjs

22
推荐指数
2
解决办法
2万
查看次数

然后AngularJS加载服务调用控制器并进行渲染

我的问题是我需要在调用控制器并呈现模板之前加载服务. http://jsfiddle.net/g75XQ/2/

HTML:

<div ng-app="app" ng-controller="root">
    <h3>Do not render this before user has loaded</h3>            
    {{user}}
</div>
?
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

angular.module('app', []).
factory('user',function($timeout,$q){
    var user = {};            
    $timeout(function(){//Simulate a request
        user.name = "Jossi";
    },1000);
    return user;
}).
controller('root',function($scope,user){

    alert("Do not alert before user has loaded");
    $scope.user = user;

});
?
Run Code Online (Sandbox Code Playgroud)

javascript synchronization sync angularjs

21
推荐指数
2
解决办法
4万
查看次数

仅在AngularJS中完成初始化后运行控制器

我在AngularJS应用程序中执行任何控制器之前需要加载一些全局数据(即在AngularJS中全局解析依赖关系).

例如,我有一个UserServicegetCurrentUser()它不以获取有关当前验证的用户数据到后端服务器的请求方法.我有一个控制器需要这些数据才能启动另一个请求(例如加载用户的余额).

我怎样才能做到这一点?

javascript initialization angularjs

14
推荐指数
1
解决办法
1万
查看次数

使用$ http.get调用响应初始化AngularJS常量

如何通过响应GET请求来初始化我的angularjs应用程序.

例如 :-

    angular.module('A',[]);
    angular.module('A').run( function ($rootScope,$http){
      $rootScope.safeApply = function (fn) {

                $http.get('url').success(function(result){

                    // This doesn't work. I am not able to inject 'theConstant' elsewhere in my application
                    angular.module('A').constant('theConstant', result);
                });                   
                var phase = $rootScope.$$phase;
                if (phase === '$apply' || phase === '$digest') {
                    if (fn && (typeof (fn) === 'function')) {
                        fn();
                    }
                } else {
                    this.$apply(fn);
                }
            };
      });
Run Code Online (Sandbox Code Playgroud)

我希望在我的应用程序初始化时设置常量,并能够在我的组件之间共享常量.

实现这一目标的最佳方法是什么?

javascript angularjs

13
推荐指数
2
解决办法
2万
查看次数

Angular/Ionic和异步SQLite - 确保数据工厂在返回之前初始化

我正在使用Ionic编写PhoneGap/Cordova应用程序,并使用SQLite(使用ngCordova)进行持久存储.应用程序的核心是从SQLite数据库中检索的项目的滚动列表.

listController.js

.controller('ListCtrl', [
  '$scope',
  'dataFactory',
  function($scope, dataFactory) {

    var items = dataFactory.getAllItems().then(function(data){
      $scope.allItems = data;
    });

  }
]);
Run Code Online (Sandbox Code Playgroud)

dataFactory.js

.factory('dataFactory', [function($window, $log, $q, $cordovaSQLite, dummyDataGenerator){    

  var db_;

  // ...lots of SQLite fun in here
  // cascading async callbacks to load the database and inject dummy data
  var openDB_ = function(){...};
  var createTable_ = function(){...};
  // etc

  var getAllItems = function(){

    var q = $q.defer();
    $cordovaSQLite.execute(db_, sqlSelectString, []).then(
      function(results) {
        $log.log("SQL SELECT successful");
        var i, len, allItems = [];
        for(i …
Run Code Online (Sandbox Code Playgroud)

javascript sqlite angularjs ionic-framework

8
推荐指数
1
解决办法
7070
查看次数

AngularJS在app.run()中的承诺

我正在研究angularJs和typescript项目.在启动客户端应用程序和加载UI之前,我必须进行同步http调用并从服务器获取一些数据.我在互联网上搜索,看到每个人都谈论承诺,huumm好吧为什么不呢.所以我在app.run()中使用promise(make $ http call并使用$ q来返回promise).也许我什么都没有,因为这根本不起作用.Angular启动app.config(),然后app.run(),...但Angular不会在启动app.run()之前等待app.config()完成.所以我的第一个承诺是在app.run()中启动,在它解决Angular尝试实例化控制器之前......我不想创建新的服务调用httpSynchronous,但我没有任何其他想法.

javascript synchronous promise angularjs

7
推荐指数
1
解决办法
1万
查看次数

Angularjs适合在app启动时启动http请求的时刻

我刚开始学习Angularjs 2天前.所有这两天都有一个问题让我很困惑.

我需要向服务器发出一个http请求,以便在应用程序启动时获取一些数据,但我找不到合适的时机来执行此操作.

我试controller过去打电话$http.get().但它不起作用.似乎控制器不会被实例化,如果它从未在html中使用(不确定这一点).

我也试图找到其他方法,但我只发现$ http用于http请求.而且$http只出现在controller.

也许我需要使用其他Angularjs方法?或者,我应该手动执行实例化操作?

angularjs

6
推荐指数
1
解决办法
6794
查看次数

使用异步数据初始化AngularJS配置块

在定义AngularJS应用程序的路由时,为了指示每个路由应具有的访问级别,access已为每个路由添加了一个名为的新属性.这基于此处描述的客户端授权方法.

.config块看起来如下所示:

app.config(['$routeProvider', '$locationProvider', '$httpProvider',
  function ($routeProvider, $locationProvider, $httpProvider) {

      var access = routingConfig.accessLevels; //Initialize with asynch data instead

      $routeProvider.
        when('/home', {
            templateUrl: '/Templates/home.html',
            controller: 'homeController',
            access: access.user
        });
      $routeProvider.
      when('/private', {
          templateUrl: '/Templates/private.html',
          controller: 'adminController',
          access: access.admin 
      });

      //...more route configurations

   }]);
Run Code Online (Sandbox Code Playgroud)

抛开方法的核心逻辑,我只想知道如何access用一些异步数据初始化变量,以便在access为每个路由定义属性时可用它?这是必需的,因为只有服务器知道访问级别列表.

虽然初始化AngularJS服务的答案基于在promise服务中公开a 并resolve在路由配置中使用异步数据,但在我的情况下它不起作用,因为我需要在定义路由配置之前解析异步调用,因为access属性取决于关于异步数据.

我有什么选择?能否承诺/递延方法仍然以某种方式使用?

任何建议将不胜感激.

编辑:

为了描述access正在做什么,它被一个名为的单独模块填充routingConfig.在该方法中,用户可以属于某个角色,该角色被定义为二进制数.例如public:001,user:010,admin:100(等等).

任何路由的访问级别将再次是由允许访问它的所有用户角色的OR操作定义的二进制数.因此,例如,如果user …

authorization asynchronous angularjs

6
推荐指数
1
解决办法
1868
查看次数

在 AngularJS 的两个地方使用相同的控制器

我正在开发一个 Ionic 应用程序,屏幕上有带有复选框的列表和选择全部的选项。我是 AngularJS 和 Ionic 的新手。

在“全选”和其他列表所在的父元素中使用控制器时,“全选”工作正常。

我想将全选移动到子标题,以便在我们滚动时始终可以看到“全选”。

我试图在两个地方使用相同的控制器,但 Select All 不起作用,我只是读到范围被改变并且值不会被传递。

有没有办法通过更改或任何其他方式来解决这个问题?

数据将从服务中填充。

HTML

 <ion-header-bar class="bar-light bar-subheader">
   <div ng-controller="MainCtrl">
      <ion-checkbox ng-model="selectAll" ng-click="checkAll()" >
          <p>Select All</p>
      </ion-checkbox>
    </div>
</ion-header-bar>
<ion-content class="has-header">
  <div class="list" ng-controller="MainCtrl">    
    <ion-checkbox ng-repeat="item in devList" ng-model="item.checked">
      <div class="row">
        <div class="col">
          <p>{{ item.text }} - 99</p>
          <p>{{ item.text }} - 99</p>
        </div>
         <div class="col right">
          <p>{{ item.text }} - 99</p>
           <p>{{ item.text }} - 99</p>
        </div>
      </div>
    </ion-checkbox>
  </div>
</ion-content>  
Run Code Online (Sandbox Code Playgroud)

JS

.controller('MainCtrl', function($scope) {
  $scope.devList = [ …
Run Code Online (Sandbox Code Playgroud)

html javascript angularjs ionic-framework

5
推荐指数
1
解决办法
2815
查看次数

Angular在module.run中等待promise

我正在开发一个角度应用程序,我正在使用一个服务,它应该在继续执行应用程序之前从服务器加载一些细节.

application.run(($myService)=>{
    myService.loadSomething() //The application should pause until the execution  of the Service
                              //is completed until this the browser shoudl stay in a "loading state"
});
Run Code Online (Sandbox Code Playgroud)

这样的事情甚至可能吗?

javascript web angularjs typescript

2
推荐指数
2
解决办法
5860
查看次数