GVKun编程网logo

有什么办法知道变量是否是angularjs承诺吗?(js 判断变量是否存在)

14

对于想了解有什么办法知道变量是否是angularjs承诺吗?的读者,本文将提供新的信息,我们将详细介绍js判断变量是否存在,并且为您提供关于angularjs–什么是Angularui-router生

对于想了解有什么办法知道变量是否是angularjs承诺吗?的读者,本文将提供新的信息,我们将详细介绍js 判断变量是否存在,并且为您提供关于angularjs – 什么是Angular ui-router生命周期? (用于调试静默错误)、angularjs – 什么是angular-loader.js?、angularjs – 可以在AngulrJS 1.3.0项目中使用angular / di.js吗?、angularjs – 它是Angular $http.defaults.useXDomain在CORS中真的有必要吗?的有价值信息。

本文目录一览:

有什么办法知道变量是否是angularjs承诺吗?(js 判断变量是否存在)

有什么办法知道变量是否是angularjs承诺吗?(js 判断变量是否存在)

我正在制定一个将函数用作范围参数(scope: { method:''&theFunction''})的指令。我需要知道该方法返回的结果是否为有角度的承诺(如果是,则在分辨率上会发生某些情况,否则会立即发生)。

现在,我正在测试是否foo.then存在,但是我想知道是否有更好的方法可以做到这一点。

答案1

小编典典

您可以使用$q.when将对象包装为一个承诺(无论是否存在)。然后,您可以确定自己始终在兑现承诺。这应该简化随后处理结果的代码。

文档$q.when是在这里与$ Q。

angularjs – 什么是Angular ui-router生命周期? (用于调试静默错误)

angularjs – 什么是Angular ui-router生命周期? (用于调试静默错误)

我找到的最好的是 http://www.ng-newsletter.com/posts/angular-ui-router.html.它不会像例如,$ stateChangeStart,exampleState.onEnter,exampleState.resolve和exampleState.templateProvider火的顺序那么深。

一个伟大的答案格式将是干净的。就像是:

>状态foo的初始页面加载:

>角生命周期步骤1
> UI路由器生命周期步骤1
> UI路由器生命周期解析发生
> UI路由器生命周期onEnter fire
>角生命周期步骤2

> State change foo – >酒吧

> $ stateChangeStart event fires
> foo onExit fire
> bar onEnter Fires
> templateUrl获取模板
> UI路由器插回到摘要循环(或任何地方)的Angular生命周期。

>嵌套状态
>多个命名视图:
> ui-sref点击

谢谢!

编辑:调试功能提供足够的洞察力以满足需要。参见我的answer below的代码片段。

经过一些实验,我想出了如何看到生命周期足够好,调试我的应用程序,并得到一个感觉发生了什么。使用所有事件,包括onEnter,onExit,stateChangeSuccess,从 here的viewContentLoaded,给了我一个体面的图片,当事情发生时,一个更加灵活和特定于我的代码比写出的生命周期。在应用程序模块的“运行”功能中,我放置:

这个代码会节省我的时间和困惑,如果我开始使用它,当我第一次使用Angular和UI路由器。 UI路由器需要一个“调试”模式,默认情况下启用它。

$rootScope.$on('$stateChangeStart',function(event,toState,toParams,fromState,fromParams){
  console.log('$stateChangeStart to '+toState.name+'- fired when the transition begins. toState,toParams : \n',toParams);
});
$rootScope.$on('$stateChangeError',fromParams,error){
  console.log('$stateChangeError - fired when an error occurs during transition.');
  console.log(arguments);
});
$rootScope.$on('$stateChangeSuccess',fromParams){
  console.log('$stateChangeSuccess to '+toState.name+'- fired once the state transition is complete.');
});
$rootScope.$on('$viewContentLoading',viewConfig){
   console.log('$viewContentLoading - view begins loading - dom not rendered',viewConfig);
});

/* $rootScope.$on('$viewContentLoaded',function(event){
     // runs on individual scopes,so putting it in "run" doesn't work.
     console.log('$viewContentLoaded - fired after dom rendered',event);
   }); */

$rootScope.$on('$stateNotFound',unfoundState,fromParams){
  console.log('$stateNotFound '+unfoundState.to+'  - fired when a state cannot be found by its name.');
  console.log(unfoundState,fromParams);
});

angularjs – 什么是angular-loader.js?

angularjs – 什么是angular-loader.js?

我在Google群组和Stackoverflow上也看到了类似的问题。两次都没有回答这个问题。这个文件中的代码并没有使它非常清楚它是什么,它如何使用。也不是从Angular文档中清楚。

有人可以解释如何使用。也可以与Require.js一起使用?

角加载器允许以任何顺序加载角脚本。

作为angular-seed项目shows us,Angular loader没有任何特定的api,你只是把它放在你的索引文件的顶部(以便它首先执行),而不是继续加载您喜欢的应用程序文件。

但是,对于你的用例最重要的事情是你根本不需要角度加载器。 RequireJS还允许以任何顺序加载文件,但它还为您提供了角加载器不是为其提供的许多其他功能。

所以,是的,你可以使用它与RequireJS,但你不需要,因为它变得多余。

angularjs – 可以在AngulrJS 1.3.0项目中使用angular / di.js吗?

angularjs – 可以在AngulrJS 1.3.0项目中使用angular / di.js吗?

Volta在ng-conf上谈到的新的依赖注入,包含在这里: https://github.com/angular/di.js正是我正在为我的AngularJS 1.3.0项目寻找的.

问题是,我不清楚我是否可以使用它.在github项目示例中,似乎没有使用AngularJS v1的例子.

我在Backbone项目中发现了一个例子:http://teropa.info/blog/2014/03/18/using-angular-2-0-dependency-injection-in-a-backbone-app.html,我发现在AngularJS v1项目中使用ES6的一个例子:https://github.com/mvolkmann/todo-es6/,但是我在Angular v1项目中找不到使用新的DI的例子.

我很困惑.任何指针?

也许不要使用di.js,而是将类似样式的代码转换成有效的角度1.X语法(在构建步骤中)

一个小例子和一个可能的开始:

var falafel = require('falafel');
var traceur = require('traceur');

var src =  
  '@Inject(MyService,MyOtherService)' +
  'class Thing{' +
  '  constructor(service,otherservice){' +
  '  }' +
  '}';

src = traceur.compile(src,{ annotations: true });
//console.log(src);

function tryGetPath(obj,path) {
  path.split('.').forEach(function(key) {
    obj = obj && obj[key];
  });
  return obj;
}

var output = falafel(src,function(node) {
  //find `Object.defineProperty for 'annotations'`
  if (node.type === 'CallExpression' && tryGetPath(node,'arguments.1.value') === 'annotations') {
    var injectable = tryGetPath(node,'arguments.0.name');
    var $inject = (tryGetPath(node,'arguments.2.properties.0.value.body.body.0.argument.elements') || [])
                       .filter(function(a){return a.callee.name === 'Inject'})  
                       .reduce(function(p,c){ p.push.apply(p,c.arguments); return p;},[])
                       .map(function(a){return "'"+a.name+"'";});
    node.update(injectable + '.$inject = [' + $inject.toString() + '];');
  }
});

console.log(output);

也许您甚至可以使用某些属性(例如@NgController等)将其注册到您的模块上作为控制器.

angularjs – 它是Angular $http.defaults.useXDomain在CORS中真的有必要吗?

angularjs – 它是Angular $http.defaults.useXDomain在CORS中真的有必要吗?

在处理CORS时,我看到有人在角度中使用$http.defaults.useXDomain = true.真的有必要这样做吗?

我只是在不同的域中设置了laravel和angular(通过不同的域,我的意思是我将angular and laravel放在localhost www文件夹中的完全分离的文件夹中.仅供参考我使用Nginx).我用棱镜的http请求击中了laravel控制器.它工作正常,我是否使用$http.defaults.useXDomain.

幸运的是,这种情况使我的工作变得更容易一些.但我仍然想知道为什么会发生这种情况有什么解释?

不,这是没有必要的.事实上,这不是一件事.

check it out

Cors通过正确的标题/预检请求和响应来工作,您可以在angularjs中执行各种不同的方式.

Here更多的是关于角色的运作.

关于有什么办法知道变量是否是angularjs承诺吗?js 判断变量是否存在的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于angularjs – 什么是Angular ui-router生命周期? (用于调试静默错误)、angularjs – 什么是angular-loader.js?、angularjs – 可以在AngulrJS 1.3.0项目中使用angular / di.js吗?、angularjs – 它是Angular $http.defaults.useXDomain在CORS中真的有必要吗?的相关知识,请在本站寻找。

本文标签: