有没有办法看到所有已经开启的州$stateProvider?
在这种情况下,我希望我的状态分配分布在许多文件中.我想在不同的文件中run或config在不同的文件中检查构建的状态.
例如:
# component1.coffee
angular.module('zoo').config ($stateProvider) ->
$stateProvider.state 'component1',
url: '/component1'
template: _template
controller: 'Component1Ctrl'
# component2.coffee
angular.module('zoo').config ($stateProvider) ->
$stateProvider.state 'component2',
url: '/component2'
template: _template
controller: 'Component2Ctrl'
# componentNavigation.coffee
angular.module('zoo').run ($state) ->
console.log 'All configured states:', $state.configuredStates # doesn't exist.
Run Code Online (Sandbox Code Playgroud)
有什么东西会列出这两个州,component1并且component2?
我想在Zepto或Jquery中用$ .ajax POST一个对象数组.两者都表现出相同的奇怪错误,但我找不到我做错了什么.
当使用像'RestEasy'这样的测试客户端发送数据时,数据会保存到服务器,我可以在浏览器的网络面板中看到请求被破坏,所以我相信JS是罪魁祸首.
如果我发送一个对象数组作为POST的数据属性,则它们没有正确发送.
数据对象:
var postData = [
{ "id":"1", "name":"bob"}
, { "id":"2", "name":"jonas"}
]
Run Code Online (Sandbox Code Playgroud)
请求:
$.ajax({
url: _saveDeviceUrl
, type: 'POST'
, contentType: 'application/json'
, dataType: 'json'
, data: postData
, success: _madeSave.bind(this)
//, processData: false //Doesn't help
});
Run Code Online (Sandbox Code Playgroud)
请求正文,如浏览器中所示:
"bob=undefined&jonas=undefined"
Run Code Online (Sandbox Code Playgroud)
通过使用jQuery和Zepto用于准备POST数据的$ .param方法,可以更直接地看到这一点.
$.param(
[
{ "id":"1", "name":"bob"}
, { "id":"2", "name":"jonas"}
]
)
// Output: "bob=undefined&jonas=undefined"
Run Code Online (Sandbox Code Playgroud)
因此,这些库为复杂的后期数据做的准备似乎与我预期的不同.
我看到了这个答案,但我不希望将数据作为查询参数发送,因为我正在发布大量内容. 如何使用jQuery在.ajax帖子中发送数组?
使用jQuery/Zepto通过POST发送多个对象的正确方法是什么?
使用$ .ajax({... data:JSON.stringify(postData)...})发送非破坏内容,但服务器不喜欢该格式.
更新: 似乎JSON.stringify发送格式正确的内容.问题是服务器端非常非常具体地说明了它想要的对象的结构.如果我在对象中添加或删除任何属性,它将使整个过程失败,而不是使用匹配的属性.这很不方便,因为将服务器发送的内容用作视图模型很好,但视图模型会发生变化.......仍在努力寻求最佳解决方案.
在阅读了Google关于使Ajax生成的内容可抓取的政策以及许多开发人员的博客文章和Stackoverflow问答主题之后,我得出的结论是,没有办法建立只有JavaScript/Ajax生成的网站HTML可抓取.我目前正在工作的网站没有获得相当数量的内容索引.我们的非索引内容的所有表示层都是通过从基于Ajax的Web服务调用返回的JSON生成HTML而构建的,我们相信Google并没有因此而对内容编制索引.那是对的吗?
唯一的解决方案似乎是拥有搜索引擎(特别是谷歌)网站的"后备"版本,其中所有HTML和内容都将按照传统方式在服务器端生成.对于启用了JavaScript的客户端,似乎我们可以使用与现在基本相同的方法:使用JavaScript从异步加载的JSON生成HTML.
回顾一下,我的理解是,如上所述,当前在创建可抓取的Ajax生成的网站时应用DRY原则的最佳实践是使用可以在客户端和服务器端使用相同模板的模板引擎.对于启用了JavaScript的客户端,客户端模板引擎(例如mustache.js)会将从服务器发送的JSON数据转换为HTML,如其模板文件的副本所定义.对于禁用了JavaScript的搜索爬虫和客户端,同一模板引擎(例如mustache.java)的服务器端实现将类似地对其相同的模板文件的副本进行操作以输出HTML.
如果该解决方案是正确的,那么这与4或5年前由前端重型站点使用的方法有何不同,其中站点基本上必须维护两个模板代码副本,一个副本用于启用JavaScript的用户(几乎每个人)和没有启用JavaScript的搜索引擎和浏览器的另一个副本(例如在FreeMarker或Velocity中)(几乎没有人)?似乎应该有更好的方法.
这是否意味着需要维护两个模板模型层,一个在客户端,另一个在服务器端?将这些客户端模板与Backbone.js,Ember.js或YUI App Library等前端MVC(MV/MVVC)框架相结合是多么可取?这些解决方案如何影响维护成本?如果不将更多框架(一个新的模板引擎和一个前端MVC框架)引入开发团队的技术堆栈,尝试这样做会更好吗?有没有办法减少冗余?
如果该解决方案不正确,那么我们是否缺少某些东西,并且可以通过我们的JavaScript做得更好,以保持我们现有的异步HTML-from-JSON结构并将其编入索引,因此我们不需要引入新的东西到架构堆栈?当业务需求发生变化时,我们确实不必更新表示层的两个版本.
我以为有办法做到这一点,我以前偶然发现了它.我已经阅读了这些答案,但它们并不是我所说的:
我也查看了咕噜咕噜的文档,但它不存在:
https://github.com/gruntjs/grunt/wiki/Configuring-tasks
有这样的语法吗?
grunt.task.run 'htmlmin:allFiles:collapseWhitespace=true'
我想使用在线工具与人们远程工作,进行Javascript学习和测试练习.
解决方案可以是共享的公共Javascript控制台.
这样的事情存在吗?我见过http://jsfiddle.net.这项工作正常,但我们必须在每次更改代码时不断更新我们的URL,因此它不是实时的,并且需要双方都进行更新.
我认为一个低功能的实时共享控制台将是一个非常简单的构建解决方案.如果它不存在,我正在考虑自己构建它,但我想先检查一下,看看是否有人听说过这样的事情.
我明白我可以按元素获得范围:
scope = angular.element($0).scope();
scope.$id; // "003"
Run Code Online (Sandbox Code Playgroud)
如何反转:使用范围查找DOM元素$id,例如003?
我想这样做是为了调试目的.我的范围树显示了一些东西,我想确定它来自哪里.
我刚开始使用咕噜,并喜欢它.我一直遇到一个似乎很常见的问题.这里是.我有文件命名,以便点后的单词类似于类.例如:
layout.coffee
layout.blog.coffee
layout.site.coffee
Run Code Online (Sandbox Code Playgroud)
我的grunt任务配置为观察这些文件并将它们转换为js,如下所示:
coffee:
dev:
files: [
expand: true
cwd: "<%= yeoman.app %>"
src: ["**/*.coffee"]
dest: "<%= yeoman.dev %>"
ext: ".js"
]
Run Code Online (Sandbox Code Playgroud)
我认为,问题在于使用ext将所有三个.coffee文件的目标作为目标文件layout.js,这不是意图.
有没有一种很好的方法来配置具有多个点的文件名的grunt文件映射?
现在我必须更改我的命名约定-而不是.,这是一个拖动:(
重构一个同事的代码,我正在寻找dispatch_barrier_asyncswift 3中的等价物.有很多队列正在运行,他的设计只是阻止这个队列,而且只针对这个单一的操作.
// Swift 2.3
func subscribe(subscriber: DaoDelegate) {
dispatch_barrier_async(self.subscribers.q) { // NOTE: barrier, requires exclusive access for write
//...
}
}
// Swift 3
func subscribe(subscriber: DaoDelegate) {
(self.subscribers.q).async { // (Not equivalent, no barrier on the concurrent queue)
//...
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在Swift 3中保留相同的功能而无需重构所有队列类型吗?
我不知道我多久都错过了这个.我一直假设私有实例变量像这样工作,但他们没有.当然,它们是私有的(如非全局的),但变量是跨实例共享的.这导致了一些非常混乱的错误.
我以为我正在遵循一些最好的图书馆实施的最佳实践,但似乎我错过了一些东西.
var Printer = (function(){
var _word;
Printer = function(word){
_word = word;
}
_print = function(){
console.log(_word);
}
Printer.prototype = {
print: _print
}
return Printer;
})();
var a = new Printer("Alex");
var b = new Printer("Bob");
a.print(); //Prints Bob (!)
b.print(); //Prints Bob
Run Code Online (Sandbox Code Playgroud)
我看过这篇文章,但没有描述实现私有实例变量的最佳实践.(这甚至是我想要的名称吗?) JavaScript中私有和实例变量的方法和变量范围
我也查看了这篇文章,但使用'this'关键字是我以前做的.因为它没有混淆我试图避免它.这真的是唯一的方法吗? 在原型继承中实现实例方法/变量
我可以self在Swift中用作默认参数吗?这段代码感觉非常简单,但我不理解编译器正在反击的消息:
func printTree(node: TreeNode = self, tabs: String = "") {
println(tabs + node.name!)
node.children.forEach { printTree(node: $0, tabs: tabs+"\t") }
}
Run Code Online (Sandbox Code Playgroud)
错误:
'TreeNode -> () -> TreeNode' is not convertible to 'TreeNode'
Run Code Online (Sandbox Code Playgroud)
咦?
可能还有其他方法可以解决树遍历,但我实际上只是对默认参数限制感到好奇.这是真的吗?在文档中是否提到了这一点?我找不到一个.
更新:
我从头开始做了这个没有依赖关系(我有一个类heirarchy和forEach之前涉及的自定义猴子补丁).它仍然是错误的:
class PeanutButterJelly {
var children: [PeanutButterJelly]?
func doDance(){ println("dancing") }
func everybodyDanceNow(pbj: PeanutButterJelly = self) {
pbj.doDance()
if let children = pbj.children {
for child in children { child.doDance() }
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
Swift compilation error: unresolved identifier …Run Code Online (Sandbox Code Playgroud) angularjs ×2
gruntjs ×2
javascript ×2
ajax ×1
angular-ui ×1
automation ×1
coffeescript ×1
concurrency ×1
dry ×1
jquery ×1
jsfiddle ×1
mustache ×1
parameters ×1
rest ×1
seo ×1
swift ×1
swift3 ×1
zepto ×1