gpt4 book ai didi

javascript - 我如何在 emberjs 的 Controller 中操作 dom?

转载 作者:搜寻专家 更新时间:2023-11-01 05:25:07 25 4
gpt4 key购买 nike

这是一个场景:

我在 Controller 初始化时加载数据。当加载完成时。我想根据加载数据调整容器元素的大小。那么问题来了,我如何访问 Controller 中的 View ?

我知道我可以通过 this.$() 在 View 中操作 dom,但是我如何访问 Controller 中的 dom 或者如何访问 Controller 中的 View 。我在这里使用 Ember.Router。所以我不手动创建 View 和 Controller 。

http://jsbin.com/oxudor/edit#javascript,html我在这里展示了一些代码示例。代码无法执行,但可以显示我的问题。我对有问题的代码做了一些评论。

最佳答案

我认为你不应该在 Controller 中玩 dom。这打破了 MVC。也许一种解决方案是在 View 中定义一个观察者,监听 Controller 的内容。在这个观察者中,然后玩 dom(你在 View 中,所以没问题)。正如@pangratz 所建议的那样,使用一些代码,也许我可以给你一个更完整的答案。

编辑:我认为您可以将轮播功能放在相关 View 中,并观察 controller.loading 属性。在这里,您可以使用 this.$() 检索 View 的 jquery 对象。

carousel: function() {
var context = this.get('controller'),
self = this;

if(context.get('loading') === false) {
setTimeout(function() {
var width = self.$('#page_wrapper').width(),
num = self.$('.page').size();
self.$('#pages').width(width * num);
self.$('.page').width(width);
console.log([width, num]);
console.log(context.get('elements'));
}, 100);
}
}.observes('controller.loading')

希望这对您有所帮助...

关于javascript - 我如何在 emberjs 的 Controller 中操作 dom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516712/

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