2017-02-24 4 views
2

Wir sind gerade dabei, unsere Ember-App von 1.10 auf 1.11 zu aktualisieren, und wir stoßen auf ein Problem. Wir haben einen einfachen Helfer, der nicht mehr funktioniert.Aktualisierung auf 1.11.1 - Ansicht in einem Helfer nicht zugänglich

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

-Code des Helfers:

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); 
}); 

Es scheint, dass da wir glut-cli 0.2.3 (ember 1.11.1) aktualisiert, das jetzt nicht definiert ist und so können wir Zugriff auf die Sicht oder der Controller.

Wir haben nichts im Changelog gesehen, was damit zusammenhängt, was hat sich geändert? und wie sollten wir das migrieren?

Antwort

0

So wie @acorncom erwähnt, ist das Problem, dass wir eine private API verwendeten: _registerHelper.

Wir haben es geschafft, dies vorerst zu schaffen, da die Ansicht noch zugänglich ist in env.data.view und dann der Controller ist nur eine get() weg, aber dies ist nur eine vorübergehende Lösung und wir müssen es bald umgestalten.

Der neue Code:

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

Wenn ich mich recht erinnere, war das 1.10 -> 1.11 Upgrade, wo ein Kunde von mir auch für eine Weile blockiert wurde. 1.11 und 1.12 hatten keine gute Unterstützung für Helfer und als sie eine aktualisierte Version von Helfern in 1.13 erreichten, arbeiteten sie ein bisschen anders als vorher.

Mehr Details finden Sie hier:

  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. Neue Helfer sind auch in der 1,13 Blog-Post hier erwähnt: http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html

Für meine Klienten, wir mussten den Sprung zu 1.13.3 (glaube ich) als beide machen ember-can und ember-i18n waren von diesen Änderungen betroffen und wir haben uns stark auf sie verlassen.

Hoffe, dass hilft!

Verwandte Themen