Marionette.Behaviors
'Marionette.Behaviors' — это утилитарный класс, который отвечает за связывание экземпляров Behavior с их соответствующими View. Самое важное при использовании этого класса — вы ОБЯЗАТЕЛЬНО должны переопределить метод уровня класса behaviorsLookup или установить опцию behaviorClass, чтобы всё работало корректно.
Индекс документации
API
Существуют два метода уровня класса, которые можно переопределить в классе Behaviors. Остальная часть класса связана с внутренними реализациями деталей представления.
Поиск Behaviors
Этот метод определяет, где хранятся ваши классы Behaviors. Простая реализация может выглядеть так.
Marionette.Behaviors.behaviorsLookup = function() {
return window.Behaviors;
}
По умолчанию Behaviors ищутся по их ключу в хэше Behaviors определённого представления.
В этом примере (используя реализацию по умолчанию getBehaviorClass), ваш код будет ожидать, что следующие Behaviors присутствуют в window.Behaviors.DestroyWarn и window.Behaviors.ToolTip.
var MyView = Marionette.ItemView.extend({
behaviors: {
DestroyWarn: {
message: "you are destroying all your data is now gone!"
},
ToolTip: {
text: "what a nice mouse you have"
}
}
});
getBehaviorClass
Этот метод имеет простую реализацию по умолчанию, которую легко переопределить. Он отвечает за поиск отдельного Behavior внутри Behaviors.behaviorsLookup или где-либо ещё.
getBehaviorClass: function(options, key) {
if (options.behaviorClass) {
return options.behaviorClass;
}
return Behaviors.behaviorsLookup[key];
}
behaviorClass
Это свойство позволяет передать class для использования Behavior (обойдя стандартный поиск по ключу). Это полезно, когда Behavior является зависимостью представления в системе модулей, такой как requirejs или browserify. Переданные таким образом свойства будут использоваться в getBehaviorClass.
define(['marionette', 'lib/tooltip'], function(Marionette, Tooltip) {
var View = Marionette.ItemView.extend({
behaviors: {
Tooltip: {
behaviorClass: Tooltip,
message: "hello world"
}
}
});
});
© 2016 Muted Solutions, LLC
Licensed under the MIT License.
https://marionettejs.com/docs/v2.4.7/marionette.behaviors.html