2016-02-06 47 views
5

Czy to możliwe? Kontynuuj czytanie sprzecznych raportów na ten temat.Wymienić podkontrakt 1.8.3 dla zera 4.2.1 w marionetce głównej 2.4.4

Mam aplikację Marionette, zaktualizowaną do wersji 2.4.4.

Jeżeli wpadnę w lodash zamiast podkreślenia - używając requireJS,

map: { 
    '*': { 
    'underscore': 'lodash' 
    } 
}, 

// 'underscore':'/resource/vendor/backbone.marionette/underscore', 
'lodash':'/resource/vendor/lodash/lodash.min', 

pojawia się następujący błąd ...

Uncaught TypeError: Cannot read property 'vent' of undefined 

lodash się ładuje się ok, tylko marionetka jest sędzią.

Wydaje się, że kontekst this na linii 466 jest niezdefiniowana

463 _proxyMethods: function() { 
464  _.each([ "vent", "commands", "reqres" ], function(system) { 
465  _.each(messageSystems[system], function(method) { 
466   this[system][method] = proxyMethod(this, system, method); 
467  }, this); 
468  }, this); 
469 } 

Wszelkie porady?

+0

Hmm, ciekawe. Nie jest tak, że 'messageSystems' jest' niezdefiniowany', więc linia 465 ('messageSystems [system]') nie działa? – Tholle

+1

Nie, to dziwne. Korzystanie z debuggera, jego def "this", który jest niezdefiniowany. Próbuje rozwiązać ... "to [" odpowietrznik "] [" na "]' –

+0

Pomyślałem, że może to coś zrobić z zagnieżdżonym, oba przechodząc w "tym" jako kontekście - ale wyśmiałem to samo funkcja powyżej i działa dobrze –

Odpowiedz

8

Dla każdego, kto na to patrzy, odpowiedź brzmi: nie.

Lodash 3.10.1 jest w porządku, ale uwolnienie 4.x usunął opcję context z wielu funkcji, które łamie Marionette.

stary sposób był

_.each(collection, iteratee, context); 

Nowa droga jest

_.each(collection, _.bind(iteratee, context)); 

Ale do tej pory tak dobrze z użyciem 3.10.1 z powyższych requireJS utworzonych.

Więc dopóki Marionette jest aktualizowana, trzeba trzymać się na 4.x

+0

Czy zauważysz zauważalną różnicę w szybkości od momentu przełączenia? :) – Tholle

+0

Kocham cię <3 mężczyzna – kdureidy

+0

@Tholle Nie, brak zauważalnej różnicy w prędkości –