小编hgo*_*ebl的帖子

我是否必须取消订阅ActivatedRoute(例如params)可观察信息?

我发现许多ActivatedRouteObservables喜欢paramsurl订阅但未取消订阅的例子.

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.params
    // (+) converts string 'id' to a number
    .switchMap((params: Params) => this.service.getHero(+params['id']))
    .subscribe((hero: Hero) => this.hero = hero);
}
Run Code Online (Sandbox Code Playgroud)
  • 路径对象和订阅是否自动销毁并为每个组件创建新创建?
  • 我是否必须关心取消订阅Observable
  • 如果没有,你能解释一下ActivatedRoute对象树会发生什么Router.routerState

typescript angular2-router angular2-router3 angular

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

离子历史如何工作以及何时创建非根堆栈?

我正在使用离子 v1.0.0并且不了解并行历史管理的$ionicHistory方式.

特别是在Android设备上,当使用(以前的硬件)后退按钮时,我的Angular应用程序有时表现得很奇怪,我想了解原因.(示例:向后导航打开$ionicGoBack()很久以前关闭的视图)

对我来说,似乎有些ui-router导航创建了新的历史堆栈,而其他人则将历史项目放在根历史中,即使从状态到子状态应该附加到状态记录为IMO的历史记录中.

问题

  • 任何人都可以解释在哪些情况下ui-sref$state.go(...)将历史项附加到新创建的堆栈?
  • 什么时候附加root
  • 模态是否以特殊方式处理?

很抱歉没有更具体,但应用程序相当复杂,我不知道如何在一个plunkr中隔离问题.也许我错过了一篇好的文档......

angularjs angular-ui-router ionic-framework

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

错误TS2339:类型'Y'上不存在属性'x'

我不明白为什么这段代码会生成TypeScript错误.(这不是原始代码,有点派生,所以请忽略示例中的无意义):

interface Images {
  [key:string]: string;
}

function getMainImageUrl(images: Images): string {
  return images.main;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误(使用TypeScript 1.7.5):

错误TS2339:"图像"类型中不存在属性"main".

当然,写作时我可以摆脱错误:

return images["main"];
Run Code Online (Sandbox Code Playgroud)

我不想使用字符串来访问该属性.我能做什么?

typescript

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

Firefox不显示仅缓存alt文本的图像

意见

从包含广告位的https提供单页应用程序网页.这些广告位由一些出价逻辑填充,广告通过JavaScript在IFRAME文档中编写.

首次加载显示广告图片,例如https://tpc.googlesyndication.com/pagead/imgad?id=CICAgKDLu47R8QEQARgBMggW4D7gy4qb5g

当用户在页面上操作时,会发生新的广告出价并重新加载广告位.在我们的例子中:呈现img具有相同src属性的元素.

所有其他浏览器(Chrome,IE,Safari)显示此图像,取自本地缓存.

不是这样:Firefox(Windows,Mac;版本52)的行为如下:

  • 显示alt在白色背景的文本
  • 图像不会显示:它会消失,但它是完全相同的图像,具有相同的URL
  • 当使用开发人员工具时,工具提示会img说"错误加载图像"(我完全知道德语信息)
  • 网络选项卡不显示此图像上的任何活动(也没有304或"从缓存")

附加信息:

  • 没有可以隐藏图像的CSS活动/更改(实际上在这个img周围没有CSS).
  • 没有额外的JavaScript(例如延迟加载)
  • 没有广告拦截器存在
  • 所有资源都从中加载 https
  • 控制台中未记录任何错误
  • 第一次加载页面显示图像
  • 从来没有与所有其他浏览器没问题.

在下一页,您可以看到错误(我想这是一个FireFox错误):

http://bartelt.team.netzathleten-media.de/2017-03-30_MD-230-refresh-bug/

5秒后,广告消失(仅限FireFox).

问题

你能告诉我一些可能导致这个问题的原因吗?

有没有办法以某种方式调试onerror由外国代码(来自广告服务器)动态创建的图像?

这真的很奇怪,我非常感谢你的帮助.

html debugging firefox image

12
推荐指数
1
解决办法
547
查看次数

是否可以在Web浏览器中模拟Android"硬件"后退按钮?

很高兴能够在浏览器中的Cordova/Ionic应用程序中测试许多案例.但我还没有找到一种伪造Android(以前的硬件)后退按钮的方法.

如果有一个额外的抽屉带有一个后退按钮或一个组合键(例如Alt + Ctrl + <)会更好,这会触发一个让Ionic认为按下Android后退按钮的事件.

是否可以使用JavaScript触发此类事件?怎么样?

要明确:我在网络浏览器中测试离子应用时只想要这个.所以Android专家:不需要在这里提供Java代码 - 我们不在Android设备或模拟器上.并且:我非常确定喜欢$ionicHistory.goBack()$window.history.back()不喜欢的东西.

cordova ionic-framework

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

Location.getTime()始终返回时间戳而不是毫秒

我正在LocationManager.requestLocationUpdates()使用LocationManager.GPS_PROVIDER和注册a 跟踪GPS位置LocationListener.

我的问题:

所有经过测试的设备(Sony neo,Sony active,Moto G)都会产生一些Location物体getTime():

<trkpt ...><time>2014-05-24T10:24:59.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:00.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:01.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:02.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:03.000Z</time></trkpt>
Run Code Online (Sandbox Code Playgroud)

由于我正在计算速度,倾斜和与气压高度合并,1s(1000ms)分辨率太不精确了.而且我不相信,修复都是完全正确.000.

我的问题:

System.currentTimeMillis()作为我的跟踪点的时间戳是更好的,或者GPS定位通常远​​远落后于"实时",计算的位置实际上是过去的那些(落后几秒)?

备注:

gps android geolocation

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

编写TypeScript并为Browser和Node发出一个库

我有一个在Node.js和浏览器中使用的内部库.它有许多文件,与Grunt任务和不同的序言连接,一个用于浏览器,一个用于Node:

浏览器:

// dependent 3rd-party libs like Mustache are already global
window.myLib = { /*just a namespace object filled with stuff later*/ }

// then comes the plain javascript which just adds elements to myLib.
// This part is identical to that used in Node
// example:
myLib.renderPartDetail = function (...) {...};
Run Code Online (Sandbox Code Playgroud)

节点:

var Mustache = require('mustache');
var myLib = {};
module.exports = myLib;

// then comes the plain javascript which just adds elements to myLib.
// This part is …
Run Code Online (Sandbox Code Playgroud)

javascript node.js browserify typescript webpack

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

(将是)TypeScript与ES6的兼容性(ECMAScript 2015)

我认为TypeScript(基本上)是ECMAScript 6(又名2015),附带了类型注释.

我的TypeScript编译器(1.6.2)抱怨以下代码:

if (calc.distance > Number.EPSILON) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

错误TS2339:'NumberConstructor'类型中不存在属性'EPSILON'.

是否存在打字问题或者TypeScript(还)是否真的是ES6的超集?

我还没有尝试过这样的前沿之类的东西Map,WeakMap,承诺,发电机,...

TypeScript只是稍微落后于ES6,还是走向另一个方向?我应该通过Babel运行TypeScript编译器输出吗?

刚开始使用TypeScript,我不想背错马.

javascript typescript ecmascript-6

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

如何从 Node.js 与 R 对话?

我想使用 R 进行密集的、非交互式计算/数据分析。分析请求将从 Node.js/Express 后端调用。

输入结构是约 100kB 的 JSON,当然计算应该异步运行。R 中数据分析的输出数据要小得多(~5kB)。也可以使用二进制数据格式(例如 protobuf)。不涉及可视化。

我是 R 的新手,但发现了一个利用 ZeroMQ(作为客户端)的包。已经在另一个项目中使用 øMQ => 将是我最喜欢的通信方式,但我对任何类型的高效和稳定的通信(例如 Redis)持开放态度。

  • 是否可以运行某种 R-Server?如果是,它的运行是否与 Node.js 一样稳定?(我可以monit用来观察和重新启动一个进程,就像我用 node 做的那样。)
  • 我怎么能从 Node.js 转换到 R?
  • R 是否必须为每个请求创建一个昂贵的新会话或重用现有的?

环境:Debian/Ubuntu,也可用:Redis、MongoDB

ipc r zeromq node.js

5
推荐指数
0
解决办法
2465
查看次数

如何禁用Android Studio代码样式警告"...可以简化为......"

我在Android应用中使用productFlavorsbuildConfigField启用/禁用功能:

productFlavors {
    vanilla {
        buildConfigField "boolean", "FEATURE_SAR", "false"
    }
    edge {
        applicationIdSuffix ".edge"
        buildConfigField "boolean", "FEATURE_SAR", "true"
    }
}
Run Code Online (Sandbox Code Playgroud)

还没有找到一种方法来禁用Android Studio代码样式警告说"'!BuildConfig.FEATURE_SAR'可以简化为'false'".

正如你在我的代码中看到的那样,我尝试了很多方法,但没有一个方法可行.我无法在Android Studio中找到可以禁用此功能的设置.

@Override
@SuppressWarnings("SimplifiableIfStatement") // no effect
@SuppressLint("SimplifiableIfStatement")     // no effect
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Set<Integer> suppressPositions = new HashSet<>();

    //noinspection SimplifiableIfStatement <-- no effect
    if (!BuildConfig.FEATURE_SAR) {
        suppressPositions.add(IDX_SAR);
    }

    SimpleAdapter adapter = ViewUtils.createSimpleAdapter(
        getContext(), MENU_RESOURCES, suppressPositions);
    setListAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)

当然,有一些方法可以通过使用资源来解决这个问题,但由于某些原因,我无法在所有情况下使用资源.所以问题只是如何禁用这些警告,而不是如何更好地处理Android/Gradle中的配置管理.

android android-studio

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

使用Angular路由器切换并保留ng2-bootstrap <tabset>,<tab>的选定选项卡

我有一个组件显示使用ng2-bootstrap tabsettab.

例:

<tabset>
    <tab heading="Info" [active]="tabs[0].active">
        <account-data *ngIf="tabs[0].active"></account-data>
    </tab>
    <tab heading="Users" [active]="tabs[1].active">
        <manage-users *ngIf="tabs[1].active"></manage-users>
    </tab>
    <tab heading="Billing" [active]="tabs[2].active">
        <account-billing *ngIf="tabs[2].active"></account-billing>
    </tab>
</tabset>
Run Code Online (Sandbox Code Playgroud)

注意:tabs[N].active由组件控制并已同步选项卡更改和路由.但我觉得我的做法是错误的,因为在选定的标签内部管理路由很困难.让我们看第二个标签,在一天结束时它应该管理以下子路径:

.../users          -> provide list of users
.../users/new      -> create new user
.../users/:id      -> show a particular user
.../users/:id/edit -> edit a particular user
Run Code Online (Sandbox Code Playgroud)

这并不容易,因为显示标签的组件已经使用了这条路线:

.../:tab
Run Code Online (Sandbox Code Playgroud)

如果有这样的事情会更容易:

<tabset>
    <tab heading="Info" [routerLink]="['info']"></tab>
    <tab heading="Users" [routerLink]="['users']"></tab>
    <tab heading="Billing" [routerLink]="['billing']"></tab>
</tabset>
<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)

有人为此解决了吗?这个问题应该很常见......

angular2-routing ng2-bootstrap angular2-router angular

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

使用Spring Boot的纯REST API服务(没有资源,没有favicon,没有webjars,......)

我正在为单页面应用程序(Angular)开发一个带有Spring Boot的REST API后端.

在Spring Boot的引擎盖下发生了很多神奇的事情,我还不明白.为了获得更好的安全性("强化"),我不希望Spring安装Spring MVC等使用的任何多余的服务处理程序.只有REST端点消耗和生成JSON,没有错误路由,没有favicon.ico等.没有静态内容(SPA由nginx提供,是一个单独的部署单元).

在启动期间,日志记录如下所示:

[19:04:06.146] INFO  andler.SimpleUrlHandlerMapping [main]: Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
[19:04:06.146] INFO  andler.SimpleUrlHandlerMapping [main]: Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
[19:04:06.190] INFO  andler.SimpleUrlHandlerMapping [main]: Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Run Code Online (Sandbox Code Playgroud)

如何将我的应用程序配置为专门为API端点提供服务?

spring spring-mvc spring-boot

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

$ timeout是避免AngularJS指令中jQuery插件呈现问题的唯一/推荐方法吗?

我正在将一个jQuery webapp移植到AngularJS(< - beginner!).

为了整合bxSlider和一些模板化的东西,我写了以下指令:

[编辑]最好看看jsFiddle jsfiddle.net/Q5AcH/2/ [/ Edit].

angular.module('myApp')
    .directive('docListWrapper', ['$timeout', function ($timeout) {
        return {
            restrict: 'C',
            templateUrl: 'partials/doc-list-wrapper.html',
            scope: { docs: '=docs'},
            link: function (scope, element, attrs) {

                $timeout(function () {
                    element
                        .children('.doc-list')
                        .not('.ng-hide')
                        .bxSlider(); // <-- jQuery plugin doing heavy DOM manipulation
                }, 100); // <-------------- timeout in millis
            }
        };
    }]);
Run Code Online (Sandbox Code Playgroud)

没有$timeout问题,bxSlider无法计算新创建的元素的大小或根本找不到它们.

我有点担心使用长超时值可能会导致闪烁而使用短值可能会导致慢速机器出现问题.

在我的实际应用程序中(当然有更多数据和更多部分而不是jsFiddle)我发现了一些奇怪的东西:

当我使用超时值时,使用10或更多毫秒就足够了,所以jQuery插件bxSlider找到一个完整的DOM.等待时间较少(9毫秒或更少),插件无法正常包装<ul>.

但是仍然存在非常讨厌的闪烁问题.

在小提琴中,可能是由于DOM较小,Chrome + Firefox中只有Internet Explorer 10才会出现闪烁现象.

我不想依赖于经验值,因为$timeout它可能高度依赖于机器,操作系统,渲染引擎,角度版本,血液预测......

有一个强大的解决方法吗?

我已经找到了一些带有事件监听器($on, …

javascript jquery angularjs angularjs-directive

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