te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Do you initialize your Backbone views from within a model or elsewhere? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Do you initialize your Backbone views from within a model or elsewhere? - Stack Overflow

programmeradmin3浏览0评论

Do you initialize your Backbone views from within a model or elsewhere?

I'm trying to figure out what the best way to organize model/views. Does it make sense to have your models initialize the views?

Thanks for any info!

Do you initialize your Backbone views from within a model or elsewhere?

I'm trying to figure out what the best way to organize model/views. Does it make sense to have your models initialize the views?

Thanks for any info!

Share Improve this question edited Mar 29, 2013 at 16:41 boom asked Mar 29, 2013 at 16:37 boomboom 11.7k9 gold badges47 silver badges66 bronze badges 1
  • 2 The other way around is more mon and a model or collection knowing about the views smells bad. – mu is too short Commented Mar 29, 2013 at 16:48
Add a ment  | 

2 Answers 2

Reset to default 12

Model

No, your models don't initialize any other MVVM obects.
Make sure that they are only responsible for defining the data that they will carry, and how they will persist it.

var CoolModel = Backbone.Model.extend({
  defaults: function() {
    return {
      coolness: 'extreme',
      color: 'red'
    };
  }
};

var myModel = new CoolModel;

View

Your views should contain an initialize function that will get called automatically by the Backbone.View "parent":

var CoolView = Backbone.View.extend({

  doSomething: function() { ... },
  doSomethingElse: function() { ... },

  initialize: function() {
    this.listenTo(this.model, 'eventA', this.doSomething);
    this.listenTo(this.model, 'eventB', this.doSomethingElse);
  }

});

AppView

When you actually create a view object, you pass in the model it will be bound to. And that can technically happen anywhere in your code (but monly in the Application-level view):

renderSomething: function(todo) {
  var view = new CoolView({model: myModel});
  // view.render() ....
}

That is, your application brings together a model and a view.

While this is definately not a full and plete answer, I would remend you read through the Backbone Todos Annotated Docs.

You will see that what they do is listen to the 'add' event on the collection, and create the view for a new model from the main view when it is added to the collection. You can see this in the AppView initialize function in the annotated docs.

This is also the way I do it for all my apps, and is what I would remend. This approach also lets you include more logic around the new model if you need to (such as re-rendering a stats view which keeps track of the number of models in the collection).

发布评论

评论列表(0)

  1. 暂无评论