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 - How to namespace our JS for use with the Rails asset pipeline - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to namespace our JS for use with the Rails asset pipeline - Stack Overflow

programmeradmin3浏览0评论

I understand the reasoning behind the rails 3.1 asset pipeline: we pile all the JS in a neat, cacheable file to improve performance. Great we want that.

However, loading everything also means we've got to be very careful that we not use a certain ID or class on multiple pages, if we have some JS attached to it. Or else, the JS will fire on both pages, since its always loaded.

Now, what we want to achieve is the following:
* we want to keep everything in a single JS file (we know how we can load files separately, just don't want that)
* we want to namespace the JS in each controller_name.js so it's only loaded when the appropriate namespace is initialized
* we want to initialize the appropriate namespace by reading the current controller from say a data-attribute on the <body> tag of our layout

The problem is: we don't have a good idea how to implement in JS. Particularly, how should we namespace the JS and then dynamically initialize it based on the contents of a HTML tag..

Any help is greatly appreciated!

I understand the reasoning behind the rails 3.1 asset pipeline: we pile all the JS in a neat, cacheable file to improve performance. Great we want that.

However, loading everything also means we've got to be very careful that we not use a certain ID or class on multiple pages, if we have some JS attached to it. Or else, the JS will fire on both pages, since its always loaded.

Now, what we want to achieve is the following:
* we want to keep everything in a single JS file (we know how we can load files separately, just don't want that)
* we want to namespace the JS in each controller_name.js so it's only loaded when the appropriate namespace is initialized
* we want to initialize the appropriate namespace by reading the current controller from say a data-attribute on the <body> tag of our layout

The problem is: we don't have a good idea how to implement in JS. Particularly, how should we namespace the JS and then dynamically initialize it based on the contents of a HTML tag..

Any help is greatly appreciated!

Share Improve this question edited Dec 19, 2011 at 19:55 three 8,4783 gold badges37 silver badges40 bronze badges asked Dec 19, 2011 at 19:05 ErwinMErwinM 5,1312 gold badges25 silver badges36 bronze badges 1
  • Here is a blog post that has a few different approaches house9.blogspot./2011/05/rails-31-javascript-execution.html – house9 Commented Dec 20, 2011 at 3:15
Add a ment  | 

2 Answers 2

Reset to default 16

Here is a way to namespace everything on a controller/action level

  • http://www.viget./inspire/extending-paul-irishs-prehensive-dom-ready-execution/
  • above was inspired by http://paulirish./2009/markup-based-unobtrusive-prehensive-dom-ready-execution/

You basically declare you body as such

<body data-controller="<%= controller_name %>" data-action="<%= action_name %>">

And then these methods are called (which each have a series of methods -- so if you need something on every page, it's in mon/init. Or on all users actions, that's on users/init. Or only the users show page? that's users/show.

SITENAME.mon.init();
SITENAME.users.init();
SITENAME.users.show();

I've used this and it works very very well.

JsSpace.on('users', {
  index: function(){
    console.log('index action of users controller');
  }
});

that pattern implemented by render controller and action into body attribute then fetch them and execute the match function. js-namespace-rails

发布评论

评论列表(0)

  1. 暂无评论