木偶行为:添加动态选项

Marionette Behaviors: Add dynamic options

本文关键字:添加 动态 选项      更新时间:2023-09-26

我如何添加一个行为到我的视图与变量作为一个选项?在我的例子中,我想使用的变量是视图的一个选项,但是,当我尝试这样做时:

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

:

Uncaught TypeError: Cannot read property 'attributes' of undefined

我认为这是因为这发生在构造而不是初始化时。

那么,你有什么解决办法来实现这一点吗?

您的版本中的代码在应用程序加载期间执行。所以this实际上并没有指向视图实例,但可能指向window对象。为了让this指向视图,你需要推迟行为的规范,以便在视图实例被构造时执行:

"

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

"

查看完整版本。


另一种选择是让行为通过this.view访问视图:

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