我可以在视图上多次使用木偶行为吗?

时间:2014-11-07 15:17:36

标签: javascript backbone.js marionette

我想在2个不同的元素上使用itemView与例如InputFileBehaviors。 像

View = Marionette.ItemView.extend({
   behaviors:{
     InputFile : {
       elementSelector : "input.file1",
      field : "file1"
    },
   InputFile : {
     elementSelector : "input.file2",
     field : "file2"
  }
}

显然这不起作用,因为你会覆盖关联数组中的键,但有没有另一种方法可以多次向同一个视图添加一个行为,如果没有给我一个替代策略?

更新: 好的,我找到了解决方案。 如果您使用behaviorClass和不同的keyNames,您可以获得所需的功能,唯一的问题可能是您不能再对要重用的行为进行行为查找。 示例,如果其他人遇到同样的问题:

View = Marionette.ItemView.extend({
   behaviors:{
     InputFile1 : {
      behaviorClass : MyApp.Behaviors.InputFile1,
       elementSelector : "input.file1",
      field : "file1"
    },
   InputFile2 : {
     behaviorClass : MyApp.Behaviors.InputFile1,
     elementSelector : "input.file2",
     field : "file2"
  }
}

2 个答案:

答案 0 :(得分:1)

从2.4.1开始注意,你可以传入一个数组:

View = Marionette.ItemView.extend({
  behaviors: [
    {
      behaviorClass : MyApp.Behaviors.InputFile1,
      elementSelector : "input.file1",
      field : "file1"
    }, {
      behaviorClass : MyApp.Behaviors.InputFile1,
      elementSelector : "input.file2",
      field : "file2"
    }
  ]
});

答案 1 :(得分:0)

更新:好的我找到了解决方案。如果您使用behaviorClass和不同的keyNames,您可以获得所需的功能,唯一的问题可能是您不能再对要重用的行为进行行为查找。示例,如果其他人遇到同样的问题:

View = Marionette.ItemView.extend({
  behaviors:{
    InputFile1 : {
      behaviorClass : MyApp.Behaviors.InputFile1,
      elementSelector : "input.file1",
      field : "file1"
    },
    InputFile2 : {
      behaviorClass : MyApp.Behaviors.InputFile1,
      elementSelector : "input.file2",
      field : "file2"
    }

}