我们假设有一个父组件A,它有一个子组件B,而子组件B又有一个子子组件C。
> POST /api_jsonrpc.php HTTP/1.0
> User-Agent: curl/7.29.0
> Host: XXXXXX:1080
> Content-Type: application/json;charset=utf-8
> Accept: application/json, text/plain, */*
> Content-Length: 224
>
} [data not shown]
* upload completely sent off: 224 out of 224 bytes
100 224 0 0 100 224 0 223 0:00:01 0:00:01 --:--:-- 223< HTTP/1.1 200 OK
< Server: nginx
< Date: Tue, 25 Dec 2018 15:21:07 GMT
< Content-Type: application/json
< Connection: close
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Methods: POST
< Access-Control-Max-Age: 1000
<
{ [data not shown]
100 86840 0 86616 100 224 77583 200 0:00:01 0:00:01 --:--:-- 77612
* Closing connection 0
模板C将列出发送给它的所有参数。参数没有固定的长度或名称。
我的目标是(从B接收)从A接收参数并将其全部发送到C。我如何获取参数列表并将其发送给与A保持原样绑定的孩子?
答案 0 :(得分:0)
我不确定您是否会将此作为答案;但是当遇到您这样的要求时,我只会将参数传递给组件C
。这只能通过屈服来实现。所以;我建议的是不要在C
中渲染B
,而不要在yield
中渲染C
A
。这是我的意思的摘要:
{{!-- Template for B --}}
{{yield (hash c=(component 'C-component'))}}
{{!-- Template for A --}}
{{#B-component as |b|}}
{{b.c param1=param1 param2=param2}}
{{/B-component}}
乍一看似乎很奇怪;但是,这是Ember上下文关联的优点。如果B
对传递给它的参数不执行任何操作,而只是将它们传递给C
;为什么首先B
使用这些参数并破坏其API。它根本不需要那些参数。因此,应该将它们直接传递给C
,这要归功于yield。