ais*_*siy 4 javascript controller view ember.js
这是一个场景:
我在控制器初始化时加载数据.加载完成后.我想根据负载数据调整容器元素的大小.所以这就是问题,如何在控制器中访问视图?
我知道我可以在视图中操作dom this.$()但是如何在控制器中访问dom或者如何在控制器中访问视图.我Ember.Router在这里用 所以我不手动创建视图和控制器.
http://jsbin.com/oxudor/edit#javascript,html我在这里展示了一些代码示例.代码无法执行,但它可以显示我的问题.我对有问题的代码做了一些评论.
我认为你不应该在控制器中使用dom.这打破了MVC.也许一种解决方案可能是在视图中定义观察者,听取控制器的内容.在这个观察者中,然后玩dom(你在视图中,所以没问题).正如@pangratz建议的那样,通过一些代码,也许我可以给你一个更完整的答案.
编辑:我认为您可以将轮播功能放在相关视图中,并观察controller.loading属性.在这里,您可以使用此方法检索视图的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')
希望这有帮助......