gpt4 book ai didi

javascript - 在 Ember Timeline 上动态加载/重新加载绑定(bind)数据

转载 作者:行者123 更新时间:2023-11-29 22:03:32 25 4
gpt4 key购买 nike

我正在使用 Ember Timetree 代码 ( Timetree ),我认为它很棒。我是 Ember 和 D3 的新手,所以跳入 Timetree 代码让我头疼。我正在尝试添加功能,以便如果用户单击页面上的按钮,时间树将重新加载不同的数据。我已经尝试了一段时间,但似乎没有任何效果。这是我所拥有的:

时间树的 Ember 模板:

<script type="text/x-handlebars" data-template-name="index">
<div class="example">
{{view Ember.Timetree.TimetreeView contentBinding="App.ApiData" selectionBinding="selectedEvents" rangeBinding="eventsRange_example2"}}
</div>
</script>

定义时间树 div 的 HTML:

<div id="app"></div>

用户点击按钮的 HTML:

<button type="button" onclick="loadNewTimetree()">Reload</button>

用于重新加载时间树的函数的 Javascript:

function loadNewTimetree() {
var newJsonData = .... Get the JSON data
// Replace the existing JSON data with the newJsonData and re-draw the timeline - how?
}

我缺少将更新的 JSON 链接到时间树的部分是什么?

谢谢。

编码(marshal)

最佳答案

我找到了答案。首先,我在模板中添加了一个 viewName="mmView" 标签:

<script type="text/x-handlebars" data-template-name="index">
<div class="example">
{{view Custom.Timetree.TimetreeView viewName="mmView" contentBinding="App.ApiData" selectionBinding="selectedEvents" rangeBinding="eventsRange_example2"}}
</div>
</script>

我找到了答案的核心here .所以我更新了我的 javascript 函数:

function loadNewTimetree() {
var newJsonData = .... Get the JSON data
// View.views returns a hashtable. Key is the id, value if the View.
var views = Ember.View.views;

for (var nextKey in views) {
var nextView = views[nextKey];
// The 'viewName' is set in the template and needs to be unique for each timeline.
if (nextView.viewName && nextView.viewName == 'mmView')
{
nextView.reloadWithNewData(newJsonData );
}
}

}

然后我在我的 View 中添加了一个函数来处理更新后的 JSON:

Custom.Timetree.TimetreeView = Ember.Timetree.TimetreeView.extend(
{
... Other attributes,
reloadWithNewData:function (newTimelineJson)
{
// Need to clear out the svg contents before adding the new content
// or else you get strange behavior.
var thisSvg = this.get('svg');
thisSvg.text('');
this.set('content', newTimelineJson);
this.didInsertElement();
}
});

因此,当我调用 loadNewTimetree() 函数时,它会使用新的 JSON 更新时间线。

关于javascript - 在 Ember Timeline 上动态加载/重新加载绑定(bind)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22234710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com