2017-02-24 27 views
2

我们正在将我们的应用程序的应用程序从1.10更新到1.11,我们遇到了一个问题。我们有一个简单的排序切换助手,不再工作。更新到1.11.1 - 查看帮手内部不可访问

{{#link-to "foo" (sort-toggle "id")}} 

代码的帮手:

Ember.HTMLBars._registerHelper('sort-toggle', function(params, hash, options, env) { 
    var target = this.get('controller.sortTarget') || hash.target, 
     view = env.data.view, 
     field = params[0]; 

    hash = {}; 
    hash[target] = view.getStream(this.get('controller').createToggleString(field)); 

    options = { 
     hash: hash, 
     data: options.data 
    }; 

    return Ember.Handlebars.helpers['query-params'].helperFunction.call(this, [], hash, options, env); 
}); 

看来,因为我们更新到烬-CLI 0.2.3(烬1.11.1),这是目前不确定的,所以我们不能访问视图或控制器。

我们没有看到与此相关的更改日志中的任何内容,更改了哪些内容?我们该如何迁移呢?

回答

0

所以@acorncom提到,问题在于我们使用的是私有API:_registerHelper

现在我们设法摆脱了这种情况,因为仍然可以在env.data.view中访问该视图,然后控制器只是一个get(),但这只是一个临时解决方案,我们将不得不重新构建它。

新代码:

Ember.HTMLBars._registerHelper('sort-toggle', function(params, hash, options, env) { 
    var view = env.data.view, 
     field = params[0], 
    target = view.get('controller.sortTarget') || hash.target; 

    hash = {}; 
    var toggleString = view.get('controller').createToggleString(field); 
    hash[target] = view.getStream(toggleString); 

    options = { 
     hash: hash, 
     data: options.data 
    }; 

    return Ember.Handlebars.helpers['query-params'].helperFunction.call(this, [], hash, options, env); 
}); 
3

如果我没有记错的话,1.10 - > 1.11升级是我的客户也被阻止了一段时间。 1.11和1.12对助手并没有很好的支持,当他们在1.13中登陆助手的更新版本时,他们的工作方式与以前完全不同。

更多详细信息请访问:

  1. https://github.com/emberjs/ember.js/issues/11080
  2. https://github.com/emberjs/rfcs/blob/master/text/0053-helpers.md
  3. https://github.com/mixonic/rfcs/blob/helper-listing/active/0000-helper-listing.md
  4. 新的帮手都在1.13此处的博客文章中还提到:http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html

为我的客户,我们不得不跳到1.13.3(我相信) ember-canember-i18n受到这些变化的影响,我们严重依赖它们。

希望有帮助!