我看到ember有一个非常好的机制,可以使用此处{{yield}}
记录的机制将内容包装到组件中.
因此,要使用文档中的示例,我可以blog-post
像这样定义组件模板:
<script type="text/x-handlebars" id="components/blog-post">
<h1>{{title}}</h1>
<div class="body">{{yield}}</div>
</script>
Run Code Online (Sandbox Code Playgroud)
然后我可以blog-post
使用以下格式嵌入任何其他模板:
{{#blog-post title=title}}
<p class="author">by {{author}}</p>
{{body}}
{{/blog-post}}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以{{yield}}
在组件模板中指定两个不同的插座吗?
像这样的东西可以通过Named Outlets来实现,Ember.Route#renderTemplate
如下所示:
把手:
<div class="toolbar">{{outlet toolbar}}</div>
<div class="sidebar">{{outlet sidebar}}</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
App.PostsRoute = Ember.Route.extend({
renderTemplate: function() {
this.render({ outlet: 'sidebar' });
}
});
Run Code Online (Sandbox Code Playgroud)
我不确定我是否可以将这条路径用于一个不知道路由模板将呈现它的组件.
编辑1:
为了清楚起见,我正在尝试将Android Swipe for Action Pattern实现为Ember组件.
所以,我希望这个组件的用户能够指定两个不同的模板:
我想把它变成一个组件,因为相当多的javascript用于处理触摸(开始/移动/结束)事件,同时仍然管理基于平滑触摸的列表滚动.用户将提供两个模板,该组件将管理触摸事件和必要动画的处理.
我已经设法让组件以块形式工作,块的内容被视为(1).第二个模板(2)通过参数(actionPartial
下面)指定,该参数是操作的部分模板的名称:
组件把手模板:sfa-item.handlebars
<div {{bind-attr class=":sfa-item-actions …
Run Code Online (Sandbox Code Playgroud) 这个例子
有关为索引数组赋值的文档显示了一个对那些天真的程序员有意想不到的结果的例子.
>>> x = np.arange(0, 50, 10)
>>> x
array([ 0, 10, 20, 30, 40])
>>> x[np.array([1, 1, 3, 1])] += 1
>>> x
array([ 0, 11, 20, 31, 40])
Run Code Online (Sandbox Code Playgroud)
文档说人们可以天真地期望数组的值x[1]+1
增加三倍,而是分配给x[1]
三次.
问题
让我感到困惑的是,我所期待的是操作的x += 1
行为与普通Python中的行为一样x = x + 1
,因此x
产生了array([11, 11, 31, 11])
.如下例所示:
>>> x = np.arange(0, 50, 10)
>>> x
array([ 0, 10, 20, 30, 40])
>>> x = x[np.array([1, 1, 3, 1])] + 1 …
Run Code Online (Sandbox Code Playgroud) 命令:
cookiecutter https://github.com/pydanny/cookiecutter-django/
Run Code Online (Sandbox Code Playgroud)
将克隆最新版本cookiecutter-django
,针对Django 1.9.
指向某些标签时有一个稳定部分README
.其中一个是https://github.com/pydanny/cookiecutter-django/releases/tag/1.8.7
.
但如果我尝试:
cookiecutter https://github.com/pydanny/cookiecutter-django/releases/tag/1.8.7
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
subprocess.CalledProcessError: Command '[u'git', u'clone', u'https://github.com/pydanny/cookiecutter-django/releases/tag/1.8.7']' returned non-zero exit status 128
Run Code Online (Sandbox Code Playgroud)
那么,如何指定cookiecutter
使用那些稳定发布而不是master
分支?
我可以用向量列表构建地图:
user=> (into {} (list (vector "a" "b") (vector "c" "d")))
{"a" "b", "c" "d"}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用列表列表来执行此操作,则会失败:
user=> (into {} (list (list "a" "b") (list "c" "d")))
Execution error (ClassCastException) at user/eval3 (REPL:1).
class java.lang.String cannot be cast to class java.util.Map$Entry (java.lang.String and java.util.Map$Entry are in module java.base of loader 'bootstrap')
Run Code Online (Sandbox Code Playgroud)
为什么?
假设您要定义一个局部设置,以任意顺序设置位置参数,即,您想对str.split应用partial来固定第二个和第三个参数。所需的结果与:
lambda s: str.rsplit(s, SEP, 1) # SEP given.
Run Code Online (Sandbox Code Playgroud)
(我使用str.rsplit(s...
而不是s.rsplit(...
使观点更清楚)。
使用functools.partial的一些近似是:
partial(str.rsplit, sep=SEP, maxsplit=1) # SEP given
Run Code Online (Sandbox Code Playgroud)
但是str.rsplit不使用关键字参数,仅使用位置参数。
如何部分修正这些论点?唯一的选择是lamda和包装吗?
如果要内联定义函数,则包装程序很丑陋,例如为需要函数的参数定义它。LAMBDA是事实上的这里,并且部分是其他选项,但似乎缺乏在这种情况下。