2017-02-24 59 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受到這些變化的影響,我們嚴重依賴它們。

希望有幫助!