2016-02-06 3 views
5

Возможно ли это? Продолжайте читать противоречивые сообщения об этом.swap underscore 1.8.3 для lodash 4.2.1 в базовой марионетке 2.4.4

У меня есть приложение для марионетки, только что обновленное до 2.4.4.

Если я падаю в lodash вместо подчеркивания - использование requireJS,

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

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

Я получаю следующее сообщение об ошибке ...

Uncaught TypeError: Cannot read property 'vent' of undefined 

lodash загружается до ок, просто марионетка жалуется.

Оказывается, что контекст this на линии 466 неопределен

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 } 

Любые советы?

+0

Хм, интересно. Дело не в том, что 'messageSystems'' undefined', так что строка 465 ('messageSystems [system]') не работает? – Tholle

+1

Нет, его странно. Используя отладчик, его def 'this', который не определен. Он пытается разрешить ... 'this [" vent "] [" on "]' –

+0

Я думал, что это может быть что-то делать с вложенными каждым, как проходящие в 'this' как контекст, - но я издевался над тем же функция выше и отлично работает –

ответ

8

Для кого-либо, кто смотрит на это, ответ отрицательный.

Lodash 3.10.1 прекрасно, но релиз 4.x удалил вариант context из многих функций, которые ломают Marionette.

старый путь был

_.each(collection, iteratee, context); 

Новый путь

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

Но до сих пор так хорошо с использованием 3.10.1 с вышеуказанным requireJS созданы.

Так пока Marionette не будет обновлен, вы должны держать на 4.x

+0

Вы находите заметную разницу в скорости с момента переключения? :) – Tholle

+0

Я люблю тебя <3 человек – kdureidy

+0

@Tholle Нет, нет заметной разницы в скорости –