小编the*_*eks的帖子

如何在TypeScript接口中要求特定的字符串

我正在为第三方js库创建一个TypeScript定义文件.一项所述的方法允许对选择对象,并且选项对象的属性中的一个接收来自列表的字符串:"collapse","expand","end-expand",和"none".

我有一个options对象的接口:

interface IOptions {
  indent_size?: number;
  indent_char?: string;
  brace_style?: // "collapse" | "expand" | "end-expand" | "none"
}
Run Code Online (Sandbox Code Playgroud)

接口是否可以强制执行此操作,因此如果您包含IOptions具有该brace_style属性的对象,它将只允许可接受列表中的字符串?

typescript

98
推荐指数
6
解决办法
4万
查看次数

使用偏移值获取时区缩写

使用moment.js(使用moment-timezone),我想获得当前语言环境的时区缩写(例如PST).

var now = Date.now(); // 1423254073931
var zone = moment(now).zone(); // 480
var timezone = 
Run Code Online (Sandbox Code Playgroud)

我如何获得时区缩写?我在文档和其他地方看到的所有示例都选择了一个特定的区域"America/New_York".

从文档,它看起来像我可以得到信息的的区段对象具有zone.abbr(timestamp),但我不知道如何来访问区域对象.

的jsfiddle

javascript timezone momentjs

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

带有AngularJS的Windows Phone Panorama

我试图在AngularJS应用程序中复制Windows Phone Ui.以下是Windows Phone Ui 的示例.

Windows Phone Ui

无限滑动

一个有趣的事情是面板是无限可刷卡的.您可以继续滑动并在第一个面板上结束.

为了实现无限滑动,我复制了第一个和最后一个面板,并在原始面板之前和之后添加它们,如下所示:

复制的面板

如果您滑动到复制的面板(如"3"或"1"):

滑动到复制的面板

滑动完成后,您将立即重定向到真实面板.这种情况在用户不知道的情况下发生,因为没有动画.

重定向到实际面板

问题

问题是,面板可以有ng-controller,ng-repeat,ng-model,或任意数量的在其中创建范围的事情.当我复制标记时,会创建一个与原始范围相同但不保持同步的新范围.如何保持面板数据同步?

或者,有没有另一种方法来实现这一点,不涉及重复标记?

思路

  1. 我的一个想法是移动DOM元素而不是复制.我注意到这种策略存在显着的滞后现象,如果只有两个面板,这会导致故障,因为未选择的面板需要在当前面板之前或之后.由于感知到的性能损失,这对我来说是不可接受的
  2. 另一种选择是延迟面板内容的移动,直到滑动完成为止.您仍会看到面板标题,但在完成滑动之前内容将不可见.然后,我可以确定哪个面板现在是当前的并且动画它从正确的方向进入(取决于滑动的方向).
  3. 第三种选择是使用带有装载微调器的空白面板作为"复制"或缓冲面板.如果您滑动到不是原件之一的面板,您将看到加载微调器的闪光,直到您移动到实际面板.

这些选项都不是理想选择,所以我正在寻找其他想法.但如果没有任何好的选择,#2对我来说似乎是最好的计划.

microsoft-metro angularjs windows-phone-8

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

在两个颜色值之间创建动态d3色标

我有一个带颜色功能的d3饼图:

var color = d3.scale.ordinal()
            .range(['#0075B4', '#70B5DC']);
Run Code Online (Sandbox Code Playgroud)

如果只有两个值/件,则可行.但如果还有更多,我想在两者之间选择颜色.

d3饼图

在上面,有3个馅饼,标有"成本3"的部分将具有介于#0075B4和之间的颜色#70B5DC.

这可能与d3有关吗?这是我到目前为止的一个方面:http://jsfiddle.net/9ruzntrr/1/

d3.js

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

如何模拟利用父模块的依赖关系的Angular子模块?

简单的父模块

angular.module('app', ['ngRoute', 'app.services']);
Run Code Online (Sandbox Code Playgroud)

简单的子模块

angular.module('app.services');
Run Code Online (Sandbox Code Playgroud)

我们可以访问ngRoute此服务,因为它的依赖性app.servies是依赖性app.

angular.module('app.services').factory('myService', function($route) {
  // used $route in here
});
Run Code Online (Sandbox Code Playgroud)

在测试服务时jasmine,模拟app.services模块的最佳方法是什么,以便我可以访问$route

我能想到的最好的方法是:

beforeEach(function(){
  module('app');
  module('app.services');
});
Run Code Online (Sandbox Code Playgroud)

但最好只需注入ngRoute而不必模拟app模块.

jasmine angularjs

6
推荐指数
0
解决办法
542
查看次数

如何在gulp文件中导入或包含javascript文件

如何将我自己的javascript文件导入或包含到gulpfile中?

Gulp是通过npm安装的,所以我可以包含其他npm模块,如下所示:

var sass = require('gulp-sass');
Run Code Online (Sandbox Code Playgroud)

所以我想做一些事情:

var karmaConfig = require('karma-config.js');
Run Code Online (Sandbox Code Playgroud)

目录结构如下:

node_modules/
gulpfile.js
package.json
karma-config.js
Run Code Online (Sandbox Code Playgroud)

所以gulpfile与我要导入的文件处于同一级别.

gulp

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

编译模板而不传递范围

在AngularJS中,有没有办法在使用scope或指令的情况下将字符串模板转换为标记?

说明

我有一项服务,允许我动态创建新的角度应用程序.它为新应用程序构建DOM,然后angular.boostrap在元素上运行.

目前,DOM是这样创建的:

var element = document.createElement('div');
element.setAttribute('app', '');
element.setAttribute('size', 'small');
...
element.className = 'app layout--relative';
Run Code Online (Sandbox Code Playgroud)

有许多属性,,子元素等,因此以这种方式创建标记并不理想.最好使用模板.

通常我会使用$compile将字符串模板转换为标记,但因为我还没有运行angular.bootstrap,所以没有scope使用$compile(template)(scope);

我试过了什么

创建一个div,然后用模板字符串替换innerHTML

这样可行,但根元素上的所有属性和类都需要单独添加.

var element = document.createElement('div');
element.innerHTML = template;
Run Code Online (Sandbox Code Playgroud)

模板编译后删除范围

这有效,但我更愿意完全避免范围:

var scope = $rootScope.$new();
var element = $compile(template)(scope);
scope.$destroy();    
Run Code Online (Sandbox Code Playgroud)

angularjs

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