我尝试将Angular与Bluebird Promise一起使用:
HTML:
<body ng-app="HelloApp">
<div ng-controller="HomeController">{{name}} {{also}}</div>
</body>
JS:
// javascript
var app = angular.module('HelloApp', []);
app.controller("HomeController", function ($scope) {
var p = Promise.delay(1000).then(function () {
$scope.name = "Bluebird!";
console.log("Here!", $scope.name);
}).then(function () {
$scope.also = "Promises";
});
$scope.name = "$q";
$scope.also = "promises";
});
window.app = app;
[ 小提琴 ]
但是,无论我尝试了什么,它都保持不变"$q promises"
并且没有更新。除非我添加了手册$scope.$apply
,否则我会避免使用。
(我知道这是可能的,因为$ q可以这样做)
我正在使用Bluebird2.0,我在这里。
好吧,如果我们看看Angular自己的诺言,我们需要将Bluebird带到$evalAsync
某个地方才能获得完全相同的行为。
如果这样做,那么两个实现都符合Promises /A+的事实意味着我们可以在$q
代码和Bluebird代码之间进行互操作,这意味着我们可以在Angular代码中自由使用Bluebird的所有功能。
蓝鸟通过以下功能公开了此Promise.setScheduler
功能:
// after this, all promises will cause digests like $q promises.
function trackDigests(app) {
app.run(["$rootScope",function ($rootScope) {
Promise.setScheduler(function (cb) {
$rootScope.$evalAsync(cb);
});
}]);
}
现在我们要做的就是添加一个:
trackDigests(app);
一行接var app =...
一行,一切都会按预期进行。为了获得奖励积分,请将Bluebird放入服务中,以便您可以注入它,而不是在全局名称空间上使用它。
这是一个说明这种行为的 小提琴 。
请注意,除了Bluebird拥有的所有功能之外$q
,更重要的功能之一是Bluebird 不会
运行$exceptionHandler
,而是会自动跟踪未处理的拒绝,因此您可以throw
自由使用Bluebird的诺言,Bluebird会解决它们。而且调用Promise.longStackTraces()
可以帮助调试很多东西。
问题内容: 基础 角1.1.5- http ://plnkr.co/edit/eoKt8o4MJw9sWdYdeG3s? p= preview-作品 上调 角度1.2.6- http ://plnkr.co/edit/WopgAtFNVm1mKf5Li99h? p= preview-失败 我认为我确实遵循了文档中的说明-http: //docs.angularjs.org/api/ngAnimat
问题内容: 我已经能够让控制器将$ on侦听器与一起使用。 但我看不到任何有关如何获取服务以监听事件的文档。 我试过了,但是只允许一个听众。我希望多个服务中的侦听器,无论其父控制器是否在作用域内。 问题答案: 经过一番试验后,事实证明,使用最少的代码即可将事件发送到服务。 如果有其他人遇到此问题,请遵循示例服务代码。 该样本在获得相应广播后将服务模型保存并还原到本地存储中
问题内容: 我有一个利用SignalR与桌面应用程序通信的应用程序。要使用SignalR,我需要在.ts文件中使用jQuery。但是,从Angular 7迁移到Angular 8后,它似乎不起作用。 我像以前的Angular版本一样使用。不幸的是,$现在向控制台输出空白。 那么,Angular v8不再支持这种方式使用jQuery,还是在迁移过程中出现其他问题? 更新: 我有通过npm加载的jQu
我试图从角度服务方法查询OrientDB。但获取身份验证是一个相关错误。根据我目前的理解,我需要两个GET请求才能成功查询OrientDB。 身份验证调用。即请求 时出现错误。谁能给我一个参考实现或者指出我的代码有什么问题吗? 注意: 全局变量包含一个格式如下的JSON对象。
问题内容: 如何在以后要在另一个控制器中访问的控制器中存储变量?例如: 我该怎么做? 问题答案: 在根范围内设置的变量可通过原型继承供控制器范围使用。 这是@Nitish演示的修改后的版本,它更加清楚地显示了这种关系:http : //jsfiddle.net/TmPk5/6/ 注意,在模块初始化时设置了rootScope的变量,然后每个继承的作用域都有自己的副本,可以独立设置(该函数)。另外,r
如何初始化新映射 我有一个地图名Map1和另一个地图名Map2新地图