我有一个客户搜索视图,默认情况下,只需加载名字和姓氏的表单.但是,它可以将这些参数作为URL中的参数.我的app配置包含:
$stateProvider
.state({
name: "search",
url: "/search",
templateUrl: "partials/customerSearch.html",
controller: "CustomerSearchCtrl"
})
.state({
name: "searchGiven",
url: "/search/:fn/:ln",
templateUrl: "partials/customerSearch.html",
controller: "CustomerSearchCtrl"
})
Run Code Online (Sandbox Code Playgroud)
这有效,但似乎有不必要的冗余.有没有更好的办法?这件事$urlRouterProvider应该处理吗?
将控制器与视图模板/部分关联的方式有两种(AFAIK):指定的路径$routeProvider和ngController指令.特别是(但不是唯一的)简单路由,是否有任何优势/效率?
我的项目目前使用$ routeProvider方法,但我已经完成了嵌套视图的任务.使用ngInclude看起来很简单,只要partial指定了它的ngController.
我想开始使用Angular的ui-router而不是ngRoute.最初,我的app配置看起来像
myApp.config(["$routeProvider",
function($routeProvider) {
$routeProvider
.when("/search", {
templateUrl: "partials/customerSearch.html"
})
.when("/home", {
templateUrl: "partials/home.html"
})
.when("/login", {
templateUrl: "partials/login.html",
controller: "LoginCtrl"
})
.otherwise({
redirectTo: "/home"
})
;
}
]);
Run Code Online (Sandbox Code Playgroud)
我换掉了库,并更改了配置.我知道我仍然可以使用$routeProvider,但这似乎是一种传统的解决方法.
myApp.config(["$urlRouterProvider", "$stateProvider",
function($urlRouterProvider, $stateProvider) {
$urlRouterProvider
.when("/search", "partials/customerSearch.html")
.when("/home", "partials/home.html")
.when("/login", "partials/login.html")
.otherwise("/home")
;
$stateProvider
.state({
name: "customer",
url: "/customer/:username",
templateUrl: "partials/customer.html"
})
.state({
parent: "customer",
name: "details",
url: "/details",
templateUrl: "partials/customerDetails.html"
})
;
}
]);
Run Code Online (Sandbox Code Playgroud)
这给了我似乎表明$digest陷入循环的错误.我怀疑这条.otherwise("/home")规则.我handler是否正确指定了s,就好像它们是模板URL一样?
如果我评论出.when()s,除了之外没有任何作用 …
我正在尝试编写一个make函数来触摸/创建一个空文件和/或在可能的情况下设置权限,用户和组,或者如果没有则发出警告.但是,我的函数中的每个条件检查似乎都评估为true.
我的Makefile的基本要素是
INSTALL_USER := fileUser
INSTALL_GROUP := fileGroup
.PHONY: test
test:
$(call touchFile,~/test.ini)
define touchFile
$(eval fileName := $(strip $(1)))
-touch $(fileName)
-chmod -c 664 $(fileName)
$(info filename info $(fileName))
$(info $(shell stat -c "%a %U:%G" $(fileName)))
$(if ifeq "foo" "bar", @echo match is broken, @echo match works)
$(if ifneq "foo" "bar", @echo match works, @echo match is broken)
$(if ifneq ($(shell stat -c %a $(fileName)),664), $(warning Error - $(fileName) does not have expected permissions of 664))
-chgrp -c $(INSTALL_GROUP) …Run Code Online (Sandbox Code Playgroud) 我正在尝试让茉莉花测试在Karma中运行。这适用于使用RequireJS的AngularJS应用程序,但是目前,该测试是没有Angular依赖项的简单expect(true).toBe(true);测试。我发现,当我禁用噶的运行模块和注释掉并在和加载testSpec.js文件直接。requirejs"client/app/require-shared.js""test/require-test.js"files
但是,一旦我重新启用requirejsRequireJS配置文件并将其添加回karma.conf.js的- files保持testSpec.js文件在那里“静态”加载–我看到了错误
Chrome 33.0.1750 (Windows 7) ERROR
Uncaught TypeError: Cannot read property 'failedCount' of null
at C:/.../project/node_modules/karma-jasmine/lib/adapter.js:126
Chrome 33.0.1750 (Windows 7) ERROR
Uncaught TypeError: Cannot read property 'length' of null
at C:/.../project/node_modules/karma-jasmine/lib/jasmine.js:2518
Chrome 33.0.1750 (Windows 7): Executed 1 of 2 ERROR (0.009 secs / 0.001 secs)
Run Code Online (Sandbox Code Playgroud)
如果我尝试完整的Angular测试,$injector则会收到有关为null的错误消息,但是我认为这全都植根于requirejs模块问题。我的安装程序中缺少什么来实现此目的?
测试/ karma.conf.js
module.exports = function(config) {
config.set({
basePath: "../", // resolves to "project/"
frameworks: ["jasmine", "requirejs"],
files: [
// …Run Code Online (Sandbox Code Playgroud) 在 Node/TypeScript 项目中,如果我正在使用 VSCode编辑tsconfig.json或package.json文件,那么我会得到一些有用的智能感知,这些智能感知是由编辑器提供的,它从 TypeScript 获取。因此,我猜在某个地方,.d.ts定义文件和每个文件之间建立了关联以提供此帮助。
我的用例是.json我必须维护一个项目中的许多文件。这些文件由外部工具使用,因此它们不能是.js或.ts文件。为了使编辑这些文件更不容易出错,我希望能够编写一个关联.d.ts文件并以某种方式告诉编辑器这是该文件的定义.json文件,然后从中获取所有编辑器帮助。
我怎么做?
或者,在哪里tsconfig.json或package.json定义文件以及如何VSCode他们交往?
typescript visual-studio-code typescript-typings typescript-types vscode-settings
我有一个可以为不同客户定制的代码库.在大多数情况下,这是通过加载一个具有特定于每个客户的常量但具有相同类名的类来处理的.管理类名冲突,显然,一次只加载一个.
class Customer () {
const CUST_NAME = 'Alpha Corp.';
}
class Customer () {
const CUST_NAME = 'Beta, Inc.';
}
Run Code Online (Sandbox Code Playgroud)
对于每个客户,我也希望代码能够国际化.因此,程序可以从特定于语言的来源绘制其显示的文本,但对于客户特定的信息仍然是动态的.假设客户特定信息对i18n无动于衷.这样可以减少每个客户每种语言的文件数量,也可以减少每种语言的文件数量.期望的结果是实现类似的东西
// in separate language files:
$greeting = 'Hello. Welcome to ';
$greeting = 'Hola. Bienvenido a ';
// in front-end
$greeting = get $greeting in desired language;
echo $greeting, Customer::CUST_NAME, "\n";
Run Code Online (Sandbox Code Playgroud)
我可以设计出满足这些要求的最佳解决方案是i18n类(或类系列),它可以处理多个客户和/或多种语言.但是,与字符串文字或常量相反,调用方法的执行成本很高.这些方法将结合来自常量或外部源的转换,并将它们与Customer类中的值组合在一起.(我现在坚持使用PHP 5.2,因此类属性/常量的heredoc的细节是不可用的.)
class i18n_en () {
const GREETING = 'Hello. Welcome to ';
static public function getGreeting () {
return self::GREETING . Customer::CUST_NAME;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,我可以编写一个"模板方法"的脚本,其中我维护一个类的模板文件,带有文本占位符.客户特定文件是在客户创建时从这些模板生成的.根据需要生成或重新生成文件很容易,但我又要为每种语言的每个客户都需要一个单独的文件.因此,它不能很好地满足我的需要.
当然,我不是第一个面对这个问题的人.有人可以提供替代品或最佳做法吗?由于代码执行的次数比我创建新客户的次数多,因此我更喜欢运行时效率以便于维护.当然,一个伟大的解决方案将提供两者.
我正在学习AJS单元测试,包括RequireJS,Karma,Mocha,Chai和angular-mocks.我在前四个方面有一些运气,但是需要进行"真正的"测试并且不能让角度模拟工作.有很多事情要发生,所以我会尽可能简洁.
测试/ karma.conf.js
module.exports = function (config) {
config.set({
// requirejs may need to be listed before other modules (see https://github.com/princed/karma-chai-plugins#limited-requirejs-support)
frameworks: ["requirejs", "mocha", "chai"],
files: [
// load the RequireJS config files first
{pattern: "client/app/require-shared.js", watched: false},
{pattern: "test/require-test.js", watched: false},
// set included to false for files to be loaded via RequireJS
{pattern: "client/**/*.js", included: false },
{pattern: "bower_components/**/*.js", included: false, watched: false},
// Mocha stuff
{pattern: "test/unit/mocha.conf.js", watched: false},
// test files
{pattern: "test/unit/**/pageSelectorTest.js", included: false } …Run Code Online (Sandbox Code Playgroud) angularjs ×4
karma-runner ×2
unit-testing ×2
gnu-make ×1
javascript ×1
makefile ×1
mocha.js ×1
ngroute ×1
php ×1
requirejs ×1
routes ×1
typescript ×1