我对如何在我的快递应用程序中正确设置API路由感到困惑.我想要的是结构化的方式来定义路线而不重复自己.作为数据库,我正在使用RethinkDB.对于每个模型,假设Exercise我在models目录中创建了一个文件.这些文件仅定义模型/模式.我认为每个模型还为我的API定义了一个端点.因此,我创建了一个routes文件夹,在其中我将路由声明在单独的文件中,例如exercises.js.这是我的目录结构:
root
??? app.js
??? bootstrap.js
??? routes
? ??? exercises.js
? ??? index.js
? ??? ...
??? models
? ??? exercise.js
? ??? ...
??? ...
Run Code Online (Sandbox Code Playgroud)
示例路由文件如下所示:
module.exports = (function() {
'use strict';
var router = express.Router();
router.get('/exercises', getAllExercises);
router.get('/exercises/:id', getExerciseById);
return router;
})();
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在重复路由前缀exercises.这是一个子前缀,因为所有路由都应该以/api.是否可以在单个路由器的前缀中定义,以便我app.use('/api', [routers])在使用app.js并告诉每个路由器具有不同的路由前缀,例如/api/excursions/?我对我的声明感到困惑,也请求反馈.我认为有一种更好的方式来组织我的API,因为我正在做的事情知道我还需要包含所有路由,app.js以作为数组传递到应用程序的所有路由.这是我的app.js:
var express = require('express');
var bodyParser = require('body-parser');
var app = …Run Code Online (Sandbox Code Playgroud) 我使用最新版本的jQuery Validation Unobtrusive结合最新版本的jQuery Validate.验证本身就像一个魅力.但是,如果该字段无效,则会将值添加到该aria-describedby属性中.
假设我想输入我的密码(验证密码的长度必须大于6).最初的HTML看起来像这样:
<input data-val="true" data-val-minlength="The field Passwort must be a string or array type with a minimum length of '6'."
data-val-minlength-min="6" data-val-required="The Passwort field is required."
id="Password" name="Password" tabindex="2"
type="password">
Run Code Online (Sandbox Code Playgroud)
我开始输入一个只有5个字符的密码,然后input通过单击某处的某处删除焦点body.验证将贯穿,aria-describedby并将添加一系列属性和值.现在该aria-describedby属性只有一个值Password-error.如果我再次聚焦输入字段并删除所有字符,甚至按下退格键,则会在每个键盘上添加一个新值.这导致以下结果:
<input data-val="true"
data-val-minlength="The field Passwort must be a string or array type with a minimum length of '6'."
data-val-minlength-min="6"
data-val-required="The Passwort field is required."
id="Password" name="Password" tabindex="2" type="password" aria-required="true"
aria-invalid="true" class="input-validation-error"
aria-describedby="Password-error Password-error Password-error …Run Code Online (Sandbox Code Playgroud) 我试图找到一个使用$ route的角度1.5路由示例.如果我使用比创建代码示例更高的角度版本,我已经看过JSFiddle示例.我找不到1.2以上的工作.理想情况下,我需要一个AngularJS 1.5的工作示例.
我已经尝试过这个例子:
var app = angular.module( "myApp", [] );
app.config( function ( $routeProvider ) {
$routeProvider
.when( '/this', { templateUrl: 'this.html' } )
.when( '/that', { templateUrl: 'that.html' } )
.when( '/other', { templateUrl: 'other.html' } )
.otherwise( { redirectTo: '/this' } );
});
app.controller( 'MainCtrl', function ( $scope ) {
});
Run Code Online (Sandbox Code Playgroud)
哪个失败了1.2(并且可能是上面的).
这是不应该做的事吗?因为我无法让它工作.
在我的控制器中我有
$scope.test = "someValue"
Run Code Online (Sandbox Code Playgroud)
在我看来
<input ng-model="test" />
Run Code Online (Sandbox Code Playgroud)
我期待发生什么
<input ng-model="someValue" />
Run Code Online (Sandbox Code Playgroud)
但是,ng-model保持设置为"test".
我该如何解决这个问题?
我正在尝试在当前项目中设置JavaScript单元测试.我们使用的是Visual Studio 2013和ReSharper.最佳解决方案是使用ReSharper Test Runner,因为我们已经将它用于后端测试.现在,我想知道是否有一个选项可以使用karma.config.jsReSharper,以便我在单元测试会话中看到我的所有JavaScript测试,而不是在VS的内置测试资源管理器中.我尝试过Karma Test Adapter和Chutzpah.但是,它们都与Test Explorer集成,而不是R#Unit Test Sessions.放肆只提供了集成到VS单元测试Explorer作为你可以看到一个扩展这里.
那么是否可以使用带有ReSharper的karma配置来启用代码覆盖等等?使用一堆/// <reference path=".." />标签似乎并不理想.
我正在使用角度材料开发一个小的AngularJS应用程序.问题是我无法弄清楚如何正确设置md-card-header使用我的配置中定义的调色板的背景颜色.
$mdThemingProvider.theme('default')
.primaryPalette('blue')
.accentPalette('pink');
Run Code Online (Sandbox Code Playgroud)
基本上我想将主要颜色设置为卡片头的背景颜色.我当然可以复制RGB值,创建一个类并使用这个类设置颜色.但是,我会失去在运行时更改主题的好处,或者至少每当我更改主题时我都必须手动更改颜色.
如何将md-colors设置为任何元素,尤其是md-card-header?
我正在开发AngularFire2应用程序,并希望实现基本身份验证.到目前为止,身份验证本身仍然有效,但另外我想在注册时创建用户对象,以便每个用户在数据库中都有一个配置文件.这里的主要问题是AngularFire2服务上的几乎所有方法都返回promises.另一方面,db服务使用observables,firebase.Promise并且和observable 的组合以某种方式不能按预期工作.
所以,例如,这不起作用:
Observable.fromPromise(() => this.auth$.createUser(credentials))
Run Code Online (Sandbox Code Playgroud)
这导致错误说Argument of type 'Promise<FirebaseAuthState>' is not assignable to parameter of type 'Promise<{}>'.
这同样适用set于a上的方法db.object.我不知道如何解决这个问题.
我的想法是与承诺一起工作,但在某些时候我必须从一个观察到一个承诺.这就是我所拥有的:
auth.service.ts
register(credentials: ICredentials): firebase.Promise<FirebaseAuthState> {
return this.auth$.createUser(credentials)
.then((response: FirebaseAuthState) => this.userService.createUserEntity(response))
.then(() => this.postSignIn())
.catch((error: Error) => this.onError(error));
}
Run Code Online (Sandbox Code Playgroud)
user.service.ts
createUserEntity(response: FirebaseAuthState): Promise<boolean> {
this.user = this.db.object(`/users/${response.uid}`);
return this.user
.take(1)
.filter((snapshot: Snapshot) => !snapshot.$exists())
.mergeMap(() => this.createUser(response))
.toPromise();
}
private createUser(response: FirebaseAuthState): Observable<any> {
const { email, displayName, photoURL, providerId } = …Run Code Online (Sandbox Code Playgroud) 我现在正在尝试Windows批处理编程.到目前为止一切顺利,我可以很好地弄清楚如何删除超过x天的空目录和文件.问题是,如果我开始删除空目录,并且我们假设该进程只运行一次,那么在当前工作目录具有以下结构的情况下,总会有新的空文件夹:
Empty Folder
Empty Folder
Empty Folder
Empty Folder
Folder
Folder
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只会删除最后一个空文件夹,但是会再次出现一个空文件夹.为此我需要计算最大目录深度(在这种情况下3 - >因为三个子目录结构).如果我有这个深度,我可以运行删除过程x(dir-depth)次.如何在Windows批处理编程中获取目录深度?
angularjs ×3
javascript ×3
angular ×1
angularfire2 ×1
batch-file ×1
cmd ×1
css ×1
directory ×1
express ×1
firebase ×1
jasmine ×1
jquery ×1
karma-runner ×1
node.js ×1
recursion ×1
resharper ×1
routing ×1
rxjs5 ×1
scope ×1
windows ×1