【问题标题】:Marionette Behaviors: Add dynamic options木偶行为:添加动态选项
【发布时间】:2015-10-02 17:35:23
【问题描述】:

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

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

我明白了:

Uncaught TypeError: Cannot read property 'attributes' of undefined

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

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

【问题讨论】:

    标签: javascript backbone.js marionette backbone-views behavior


    【解决方案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);
      }
    });
    

    【讨论】:

    • 我知道这很奇怪,但第一种方法对我不起作用。任何想法为什么会这样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多