1

Как добавить поведение к моему представлению с переменной в качестве опции? В моем случае, переменная Я хочу использовать это вариант представления, но, когда я попытался это:Marionette Behaviors: Добавить динамические параметры

behaviors: { 
    prodMessage: { 
     profile: this.options.userdata.attributes._userid 
    } 
}, 

я получаю:

Uncaught TypeError: Cannot read property 'attributes' of undefined 

Я думаю, что это потому, что это пройдет в строительстве, а не в инициализации.

Итак, у вас есть обходное решение для достижения этого?

ответ

1

Код в вашей версии запускается во время загрузки приложения. Таким образом, this фактически не указывает на экземпляр представления, но, вероятно, на объект window. Для того, чтобы иметь this точку зрения, необходимо отложить спецификацию поведения, с тем чтобы он начал выполняться, когда экземпляр вид построен:

``

behaviors: function() { 
    return { 
    prodMessage: { 
     profile: this.options.userdata.attributes._userid 
    } 
    }; 
} 

``

Смотреть это codepen для полной версии.


Альтернативный вариант иметь поведение доступа к представлению через this.view:

prodMessage = Marionette.Behavior.extend({ 
    onShow: function() { 
    alert(this.view.options.userdata.attributes._userid); 
    } 
}); 
+0

Я знаю, что это странно, но первый метод не работает для меня. любые идеи, почему это так? – Emilios1995