好的,我们设置一个场景.
场景: 您有一个内容控制器.这个内容可能是照片,博客文章,等等.现在,在这个内容的html中,你有一个Comment控制器.CommentController的工作是加载注释,允许注释提交等.但是,此控制器的功能取决于它的父级.毕竟,如果没有父母,你还在评论什么?
问题: 所以说,让我们介绍一个问题.ContentController需要从服务器请求信息以填充自身,其中一部分是唯一ID.现在,还有其他方法可以解决这个问题,例如使用url-state作为唯一ID,但这是解释此问题的最佳方法.
唯一ID从服务器加载到ContentController中.然后它使用此ID和实际内容填充其$ scope.另一方面,CommentController想要加载它自己的资源,但它的资源加载都依赖于父ContentController的加载数据.由于两个控制器同时加载,我们需要一种方式来发信号或延迟执行子CommentController的执行.否则,它将尝试从服务器请求关于不存在的唯一内容id的注释.
问题: 这是一个非常基本的问题,有许多明显的答案.然而,我的问题是这样的角度怎么样?什么是最适合"角度方式"的解决方案.
最明显的方法是简单地拥有一个事件创建者/消费者.Angular有多种方法可以解决这个问题.比如一项服务,一项$scope.promise = promise解决承诺$scope.$broadcast等等.对我来说,这些公平的设计感觉......笨重......它也感觉紧密耦合.我更希望我的ContentController不被其中可能包含或不包含的内容所困扰.
另一种方式是$watch你想要的变量的范围,例如$scope.$watch('content.uid', function(newValue) {}).与上述解决方案相比,这感觉更好,耦合更少.尽管如此,至少仍然不完美.
我觉得最好的解决方案是我不知道如何实现的解决方案.我想一个控制器能够..延迟,儿童控制器,如果它(父母)正在做一些异步的事情.我觉得这比一个事件更好,因为它暗示着简单.它本质上仍然是一个事件广播,但希望语法是干净的,因为只有一个"事件".它不完整或完整.虽然,我不确定如果不使用上述任何一种方法,这样的事情是否有可能..无论如何都会实现这一点吗?
无论如何,自从我几周前开始学习Angular以来,这一直是我脑子里一直存在的问题.任何有关该主题的见解将不胜感激.
谢谢阅读!
我将rgba值存储为变量(例如:) @black: rgba(0, 0, 0, 1.0);,我意识到如果我能使alpha值变量会很好.
所以,我试过这个..
.color_black (@alpha: 1.0) { rgba(0, 0, 0, @alpha) }
Run Code Online (Sandbox Code Playgroud)
问题很简单,这不起作用.参数部分似乎是正确的,事实上,一旦你添加了rgba()代码它似乎只是"破坏".不太喜欢rgba电话.
现在我可以通过定义属性标记来完成这项工作,例如..
.color_black (@alpha: 1.0) { color: rgba(0, 0, 0, @alpha) }
Run Code Online (Sandbox Code Playgroud)
但是这种方式会破坏存储单一颜色的有用性,并在城镇中重复使用它.在背景,文本,渐变等
那么,关于如何解决这个问题的任何想法?
编辑:虽然我对此不满意......这是我能想到的最好的解决方案..
.color_black (@prop: color, @alpha: 1.0) { @prop: rgba(0, 0, 0, @alpha) }
Run Code Online (Sandbox Code Playgroud)
它不像函数那么有用,因为你不能在其他属性(渐变等)中使用它.思考?
所以我有点矛盾.我想要一个高质量的驱动程序/库来访问也是Schemaless,但似乎Nodejs唯一活跃的MongoDB库是Mongoose.
现在,Mongoose非常棒,但又一次......它是一个基于Schema的库,我不想在Mongo中使用一个这个项目.
所以,我发现符合我的标准(不是猫鼬)的选项如下.
我还缺少其他选择吗?
编辑:将其他库添加到列表中..
我有一个巨大的字符串元组,正在从一个程序返回.返回的示例元组可能如下所示:
('(-1,0)', '(1,0)', '(2,0)', '(3,0)', '(4,0)', '(5,0)', '(6,0)')
Run Code Online (Sandbox Code Playgroud)
我可以将这些字符串转换为真正的元组(内部有整数),但我希望有人知道一个很好的技巧来加快速度.我想出的任何事情都让我觉得这样做是一种相对"缓慢"的方式.正如我所提到的,这些列表可能很大,所以快速的方式将非常感激!
谢谢
编辑一个 好吧,所以它看起来eval是一个较慢的方法来做到这一点.但到目前为止,我已经测试了4种方法,感谢任何评论和提交!:)
此外,有人询问我的元组的大小.它的范围可以从几个,到希望不超过几百万.不是"太大",但足够大,速度是一个重要因素.我不是在微观优化,只是学习我可能不知道的任何新的漂亮技巧.例如,eval()是我经常忘记的东西,即使它在这种情况下看起来不那么好.
编辑两个 我还想注意,字符串格式不应该改变.所以不需要检查格式.此外,这是一个嵌入式Python v2.6.2,所以任何需要 2.6的东西都可以.另一方面,3.0不是那么多;)
看起来很棒的家伙,再次感谢所有输入:)
编辑3 另一个说明.我注意到我一直在返回没有导致"元组"的代码,这没关系,如果有人认为最终结果"有"成为元组,那就很抱歉.类似格式的东西很好.
import timeit
test_tuple = ('(-1,0)', '(1,0)', '(2,0)', '(3,0)', '(4,0)', '(5,0)', '(6,0)', '(7,0)',)
def timeit_a():
''''''
def convert_tup_strings(tup_string):
first_int, last_int = tup_string[1:-1].split(',')
return (int(first_int), int(last_int))
return map(convert_tup_strings, test_tuple)
def timeit_a_1():
''''''
def convert_tup_strings(tup_string):
return map(int, tup_string[1:-1].split(','))
return map(convert_tup_strings, test_tuple)
def timeit_b():
converted = []
for tup_string in test_tuple:
first_int, last_int = tup_string[1:-1].split(',')
converted.append((int(first_int), int(last_int)))
return converted
def timeit_b_1(): …Run Code Online (Sandbox Code Playgroud)