Angular,UI路由器.在如下状态的控制器中使用$ interval:
$scope.Timer = null;
$scope.startTimer = function () {
$scope.Timer = $interval($scope.Foo, 30000);
};
$scope.stopTimer = function () {
if (angular.isDefined($scope.Timer)) {
$interval.cancel($scope.Timer);
}
};
Run Code Online (Sandbox Code Playgroud)
问题?计时器在离开状态时仍然存在.我的理解是,当一个州离开时,$ scope和控制器基本上被"摧毁"了.因此,基于此,计时器应该停止(在控制器内,我在移动时取消计时器,这是有效的 - 但如果我导航到差异状态它会持续存在).我在这里误解了什么?
我猜因为间隔和超时是有角度的服务,它们随处可用,但我仍然不明白他们如何在未初始化的控制器中看到函数,除非它被复制.我的解决方案只是使用常规的良好的旧js间隔?
编辑:"这不能在Angular UI Modals中完成"是一个有效的答案,如果实际情况如此.
这是我从触摸事件中获得的返回数据.显然缺少任何有用的触摸X/Y坐标(https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/changedTouches).这是一个毫无希望的通用问题,但是,任何想法?传递给触摸时执行的函数的"event"对象:
{
"originalEvent": {
"isTrusted": true
},
"type": "touchstart",
"timeStamp": 1450388006795,
"jQuery203026962137850932777": true,
"which": 0,
"view": "$WINDOW",
"target": {},
"shiftKey": false,
"metaKey": false,
"eventPhase": 3,
"currentTarget": {},
"ctrlKey": false,
"cancelable": true,
"bubbles": true,
"altKey": false,
"delegateTarget": {},
"handleObj": {
"type": "touchstart",
"origType": "touchstart",
"data": null,
"guid": 2026,
"namespace": ""
},
"data": null
}
Run Code Online (Sandbox Code Playgroud)
现在,这是在画布中的角度UI模式,但鼠标事件工作正常.这是我的元素btw:
link: function(scope, element, attrs, model){
//scope.canvasElem = element[0].children[0].children[0];
scope.canvasElem = angular.element($('.touchScreen'))[0];
scope.ctx = scope.canvasElem.getContext('2d');
Run Code Online (Sandbox Code Playgroud)
这是我如何绑定的一个例子:
element.bind('touchstart', scope.touchStart);
Run Code Online (Sandbox Code Playgroud)
编辑,这是一个用于比较的mousedown事件对象:
{
"originalEvent": { …Run Code Online (Sandbox Code Playgroud) 我的最终目标很简单:
click在Facebook上为用户打开一个新的共享选项卡.我们在链接的页面上有一个包含元标记的帖子,fb知道包括作为标题/描述(如何自定义Facebook的sharer.php).问题是我使用的是Angular 2,所以我必须以某种方式在facebook看到它之前为页面动态添加元标记.
我很难想象它是如何工作的,因为我假设FB服务器将点击我的NG2应用程序并搜索元标记(因此在浏览器中打开共享链接的元数据是没有意义的,因为FB API会有所不同html的实例).
tl; dr:如何从NG2应用程序打开fb url共享对话框并提供标题/说明?
注意:"在fb上共享"页面可以像这样打开:
window.open('http://www.facebook.com/sharer/sharer.php?u=www.google.com');这样可行,但没有参数.
可选附录(动态添加元标记的示例代码,有效,但无效):
var titleMeta = document.createElement('meta');
var descMeta = document.createElement('meta');
titleMeta.setAttribute('property', 'og:title');
titleMeta.setAttribute('content', 'The Rock');
descMeta.setAttribute('property', 'og:description');
descMeta.setAttribute('content', 'Foo Description');
document.getElementsByTagName('head')[0].appendChild(titleMeta);
document.getElementsByTagName('head')[0].appendChild(descMeta);
Run Code Online (Sandbox Code Playgroud)
附录2:共享者曾经允许您在网址中输入标题和说明,但根据https://developers.facebook.com/x/bugs/357750474364812/不再是这种情况.看起来它必须从元标记中提取.
我们的高级开发人员编写了以下代码,作为示例:
public class TokenParser
{
private Token token;
public Token Parse(HttpRequestMessage r)
{
IOwinContext context = r.GetOwinContext();
token = new Token();
ParseData(context);
return token;
}
private void ParseData(IOwinContext context)
{
token.Name= context.Authentication.User.Claims.Single(x => x.Type == ClaimTypes.Name).Value;
}
}
Run Code Online (Sandbox Code Playgroud)
(还有一个"Token.cs"类,它只有一个name属性作为字符串.)
我们解码的 JWT有效载荷如下所示:
{
"iss": "https://someissuer.com/",
"sub": "I want this string, atm I get it manually",
"aud": "11543fdsasf23432",
"exp": 33244323433,
"iat": 23443223434
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我尝试通过类型"sub"获取声明时,没有任何内容出现(并且它不在列表中).但"sub"似乎是一个非常普遍的主张.
我在这做错了什么?我可以获得主题("子")声明吗?
编辑:对于那些推荐system.IdentityModel - 尝试使用它时出现此错误:

是否存在角度服务将缓存Restangular/$ http调用而未明确告知这样做的情况?例如,我有一个服务做这样的事情:
function getSomeThings(){
return Restangular.one('things').get().then(function (thing) {
return thing;
});
}
Run Code Online (Sandbox Code Playgroud)
每次页面刷新时都会调用此服务(它在UI路由器路由解析中).是否有可能每次都不会进行此调用,但Angular会以某种方式缓存这些调用,而没有明确告知这样做?
我熟悉如此明确的缓存:
RestangularProvider.setDefaultHttpFields({cache: true});
Run Code Online (Sandbox Code Playgroud)
这不是意图.我的问题是角度服务是否具有一些固有的缓存逻辑,如果是,则如何覆盖它.
我有一个非常简单的mongo查询:
db.items.find( { MyFieldName: { $exists: true, $eq: null } } );
Run Code Online (Sandbox Code Playgroud)
不是需要解释它,而是找到具有MyFieldName该字段值的文件null.看起来这对C#驱动程序来说非常简单:
var fieldExistsFilter= Builders<BsonDocument>.Filter.Exists("MyFieldName", true);
var fieldValueIsNullFilter = Builders<BsonDocument>.Filter.Eq("MyFieldName", null);
Run Code Online (Sandbox Code Playgroud)
但是,fieldValueIsNullFilter如果我尝试检查null,则第二个过滤器不会构建.如果我写"testString"或类似的东西,它工作正常,但不是null.
TL:博士; version:如何在MongoDb C#驱动程序中创建一个过滤器来检查字段是否为空?
注意,我检查了其他答案,他们建议$ exists做我想要的 - 它没有,按照mongo docs:
如果为true,则$ exists匹配包含该字段的文档,包括字段值为null的文档.如果为false,则查询仅返回不包含该字段的文档.
我很难理解在Typescript中使用Angular2的基本功能真正需要什么.如同,极简主义项目是什么样的?在"真实"项目中我绝对需要具有哪些依赖关系(不仅仅是"Hello World",而且还不复杂)?
我意识到这个问题有答案,例如,在有角度的网站上,但它们似乎包括很多绒毛.角度书似乎已经过时了.例如,我在angular2上运行npm install并获得了与ng-book2列出的不同的软件包(尽管如此,我得到了一段时间,因此它可能已经更新).
我正在为此付出一笔赏金,所以获得一个步骤列表和一些带有基本功能的示例代码会很不错.我也对项目中需要引用的内容及其原因感兴趣.(例如,我从Angular 1注意到的一个区别是人们似乎引用了Angular 2文件夹中的npm安装的多个文件,为什么?)
PS最好使用Webpack,或者解释SystemJs和WebPack是否可以被忽略以进行极简主义设置.
DateTimeOffset testDateAndTime =
new DateTimeOffset(2008, 5, 1, 8, 6, 32, new TimeSpan(1, 0, 0));
//CLEAN TIME AND DATE
testDateAndTime = testDateAndTime.DateTime.Date;
var datesTableEntry = db.DatesTable.First(dt => dt.Id == someTestId);
datesTableEntry.test= testDateAndTime;
db.SaveChangesAsync();
Run Code Online (Sandbox Code Playgroud)
结果数据库: 2008-05-01 00:00:00.0000000 -04:00
如何(在保存之前从代码中-4:00转换+00:00)?
我试过了:
public Task<DateTimeOffset> SetTimeZoneOffsetToZero(DateTimeOffset dateTimeOffSetObj)
{
TimeSpan zeroOffsetTimeSpan = new TimeSpan(0, 0, 0, 0, 0);
return dateTimeOffSetObj.ToOffset(zeroOffsetTimeSpan);
}
Run Code Online (Sandbox Code Playgroud)
它没有做任何事情.
最终目标只是拥有一个没有时间或时区偏移的日期.我不想将时间转换为另一个时区(即我不希望它从testDateAndTime时间减去4小时并删除设置时间偏移00:00:00.0000000,我只是想将它设置为偏移+00:00).我想要当前日期,零偏移.
编辑:
以下是其他地方的建议:
DateTimeOffset testDateAndTime =
new DateTimeOffset(2008, 5, 1, 8, 6, 32, new …Run Code Online (Sandbox Code Playgroud) 从本质上讲,标题所说的是,为了进行http调用,是否有任何理由使用可观察量而不是承诺?看起来像不必要的过度复杂,因为所有的调用都会成功或失败,并且几乎没有真正的理由取消它.要求这是典型的用例,而不是典型的可观察性销售 - 去抖动(具有讽刺意味的是,无论如何,ng-debounce确实很好,而不会进行无用的调用).
我正在遵循以下示例:
Get-ChildItem c:\scripts\*.* -include *.txt,*.log
Run Code Online (Sandbox Code Playgroud)
https://technet.microsoft.com/en-us/library/ee176841.aspx
是什么赋予了?当我尝试使用include时,为什么不取回我的test.txt文件列表?
作为旁注,是什么c:\scripts\*.*.它似乎在说包含任何具有任何格式名称的文件.但是不包含在指定中吗?无论如何,更感兴趣的是为什么我看似基本的代码不起作用.
angular ×3
angularjs ×3
c# ×3
javascript ×2
facebook ×1
http ×1
intervals ×1
jqlite ×1
jwt ×1
meta-tags ×1
mongodb ×1
observable ×1
owin ×1
powershell ×1
promise ×1
restangular ×1
timezone ×1
touch ×1