如何将数据馈送到动态 Ractive 组件中?
How to feed data into a dynamic Ractive component?
我正在创建一个显示 JSON 蓝图指定的 Ractive 组件的页面,需要一些帮助将正确的数据传递到组件中。
我了解如何在最简单的情况下将数据传递到组件中:
(例如,<dog theData={{theData}} />
)
但在这种情况下,我使用 Ractive.extend 函数将组件提供给循环,并且尝试了很多方法来为每个组件获取正确的数据,但都无济于事。
这个fiddle应该解释一下:
https://jsfiddle.net/4kax8dLo/7/
在“getComponent”函数中,我需要使用“this”在“homePageSections”下找到合适的数据,并将这些数据提供给组件。
如果成功,页面应显示“导航文本是 yee haa”。
(如果这些在页面上放置内容的方式看起来过于复杂,请告诉我,我可以详细说明用例。可能有更简单、更优雅的方式来实现目标。)
感谢任何指导或建议!
您确定需要组件吗?从你的例子来看,你似乎只用部分(http://docs.ractivejs.org/latest/partials)就可以做得很好。
如果是这样的话,我已经稍微修改了您的示例以使其适用于部分方法。
https://jsfiddle.net/cxnhtxLy/
定义分音:
partials: {
dog: '{{#with theData}}<h3>the dog is a <span style="color: {{color}};">{{dogType}}</span> and this works fine</h3>{{/with}}',
topHomeNav: '<div>the navText is: {{data.navText}} </div>',
heroUnit:'<div><h2>THE HERO TITLE IS:</h2><br />{{data.heroTitle}}</div>',
filterResults: '<div>filter results: </div>',
pageFooter:'<div>footertext is: {{data.footertext}}</div>'
}
打印它们的循环:
{{#each homePageData.views[currentView]}}
{{#with homePageData.homePageSections[this]}}
{{> this.partial}}
{{/with}}
{{/each}}
话虽这么说,但如果您对任务所需的部分感到满意,您可能会重构您的代码以使其看起来更清晰。
更新:
这是 fiddle 使用组件。 https://jsfiddle.net/grkgb0sr/
有关更多背景故事,请参阅下面的评论。
我正在创建一个显示 JSON 蓝图指定的 Ractive 组件的页面,需要一些帮助将正确的数据传递到组件中。
我了解如何在最简单的情况下将数据传递到组件中:
(例如,<dog theData={{theData}} />
)
但在这种情况下,我使用 Ractive.extend 函数将组件提供给循环,并且尝试了很多方法来为每个组件获取正确的数据,但都无济于事。
这个fiddle应该解释一下: https://jsfiddle.net/4kax8dLo/7/
在“getComponent”函数中,我需要使用“this”在“homePageSections”下找到合适的数据,并将这些数据提供给组件。
如果成功,页面应显示“导航文本是 yee haa”。
(如果这些在页面上放置内容的方式看起来过于复杂,请告诉我,我可以详细说明用例。可能有更简单、更优雅的方式来实现目标。)
感谢任何指导或建议!
您确定需要组件吗?从你的例子来看,你似乎只用部分(http://docs.ractivejs.org/latest/partials)就可以做得很好。
如果是这样的话,我已经稍微修改了您的示例以使其适用于部分方法。 https://jsfiddle.net/cxnhtxLy/
定义分音:
partials: {
dog: '{{#with theData}}<h3>the dog is a <span style="color: {{color}};">{{dogType}}</span> and this works fine</h3>{{/with}}',
topHomeNav: '<div>the navText is: {{data.navText}} </div>',
heroUnit:'<div><h2>THE HERO TITLE IS:</h2><br />{{data.heroTitle}}</div>',
filterResults: '<div>filter results: </div>',
pageFooter:'<div>footertext is: {{data.footertext}}</div>'
}
打印它们的循环:
{{#each homePageData.views[currentView]}}
{{#with homePageData.homePageSections[this]}}
{{> this.partial}}
{{/with}}
{{/each}}
话虽这么说,但如果您对任务所需的部分感到满意,您可能会重构您的代码以使其看起来更清晰。
更新: 这是 fiddle 使用组件。 https://jsfiddle.net/grkgb0sr/ 有关更多背景故事,请参阅下面的评论。