自定义ListView行,不能再选择行

时间:2011-01-08 03:23:29

标签: sproutcore

这是我的ScrollView:

 middle: SC.ScrollView.design({
  layout: { top: 36, bottom: 32, left: 0, right: 0 },
  backgroundColor: '#ccc',

  contentView: SC.ListView.design({
    contentBinding: 'Spanish.wordsController.arrangedObjects',
    selectionBinding: 'Spanish.wordsController.selection',
    contentValueKey: "word",
    contentDisplayProperties: 'word english'.w(),
    selectOnMouseDown: YES,

    exampleView: Spanish.CustomListItemView

  })
})

这是我的自定义listView行:

Spanish.CustomListItemView = SC.View.extend({
  render: function(context, firstTime){
    var content = this.get('content');

    var word = content.get('word');
    var english = content.get('english');

    context = context.begin().push(' %@ (%@)'.fmt(word,english)).end();
    return sc_super();
  }
});

除了我不能再选择视图外,上述工作正如预期的那样。当我注释掉“exampleView:Spanish.CustomListItemView”时,我可以选择行,但它们不再正确格式化。为什么我在使用exampleView时不能再选择行?

2 个答案:

答案 0 :(得分:3)

改为使用子类SC.ListItemView。

删除return sc_super();行。

context = context.begin().push(' %@ (%@)'.fmt(word,english)).end();行更改为:

context.push(' %@ (%@)'.fmt(word,english));

现在应该可以了。

答案 1 :(得分:0)

在获得IRC的帮助后,我做了以下修改来解决问题:

Spanish.CustomListItemView = SC.ListItemView.extend({
  render: function(context, firstTime){
    var content = this.get('content');

    var word = content.get('word');
    var english = content.get('english');

    context.push(' %@ (%@)'.fmt(word,english));
  }

});

我正在对错误的类进行子类化(注意第一行)