{"_id":"@beisen/talent-no-require","_rev":"14-eafd8fbf57d661a9811c28dc9b1e6ca1","name":"@beisen/talent-no-require","description":"Beisen TalentJS Framework","dist-tags":{"latest":"1.0.10"},"versions":{"0.1.2":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index.js","configFile":"UXStaticSharedConfig","configApp":"","configUser":"ux","grayConfigFile":"UXStaticSharedConfigGray","grayConfigApp":"","version":"0.1.2","dependencies":{"grunt":"~0.4.1","grunt-contrib-watch":"~0.4.3","grunt-contrib-jst":"~0.5.0","grunt-contrib-connect":"~0.5.0"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"ad32ff2b8b5bf3d24f0ffcc56f30ef6e4fab3d48","_id":"@beisen/talent-no-require@0.1.2","_shasum":"bf0d8538e3b98ba4ca1e2b672238a68df7dcf244","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"bf0d8538e3b98ba4ca1e2b672238a68df7dcf244","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-0.1.2.tgz","integrity":"sha512-ABxBuubY+q+44loFljoVit/BozBlir8FwCMuUb58C/OZ82/sbRA+mBgcw8dhihhbHQZo6gDGEejgJUXKyZwJDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHbOc/OVwcoCwQlbGiXKJ9qtFo8RE4ONYbsqTmS3XqrTAiEAtVng8rdPKsb4Kdm9q6hre06R7O7qlYR9o+PiTkEFGAo="}]},"maintainers":[{"name":"beisencorp","email":"ci@beisen.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-0.1.2.tgz_1509085934744_0.5447050293441862"}},"1.0.3":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index.js","version":"1.0.3","dependencies":{"grunt":"~0.4.1","grunt-contrib-watch":"~0.4.3","grunt-contrib-jst":"~0.5.0","grunt-contrib-connect":"~0.5.0"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"388e690c4dc86414fd5348e6af75a03483050c57","_id":"@beisen/talent-no-require@1.0.3","_shasum":"3af1c0cdde30d2af991ffa084d2511046192e873","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"3af1c0cdde30d2af991ffa084d2511046192e873","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.3.tgz","integrity":"sha512-Ne0IqD442syZ20yJb4ng0DM1MhQPaxE8DQOY4iPhr6ndDAl+tpSf/G8EJxU0fjEvxO9VUIYTiYrfQudPbLx2wA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2fvVZvitLrKL7/fO8xQGIqYoWk0q4R6KVFZUJxmaluAIhALKJSJE2/Qh0XJibk0/rM2GYDsGmTcDJy72ttLxNvK5v"}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.3.tgz_1509087311438_0.08814275544136763"}},"1.0.4":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.4","dependencies":{"@beisen/backbone":"^1.1.5","@beisen/lodash":"^2.2.4","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"5878e56ddea3e294a51339f214f5b463d7144ef1","_id":"@beisen/talent-no-require@1.0.4","_shasum":"59b142e94aaafb415b3affbeb9a7f5c4ff62860a","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"59b142e94aaafb415b3affbeb9a7f5c4ff62860a","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.4.tgz","integrity":"sha512-jCwDxrk4Uot8DEOP6oTrLJvmr4ZaSjPr3HyH/LNzZSOLFQQJerB5wkSPdra6FIV1JBmBykjmNtk2QG8to2iqrA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHJKF/AA7lKFExTVpFlN9Y/8sLZfBbi9/bxIW3NnPDMyAiAoROnPguqkGfdSEnp/2EKmpb5X2cjlrRDrJ56Bj5oW4A=="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.4.tgz_1509343101370_0.6991117422003299"}},"1.0.5":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.5","dependencies":{"@beisen/backbone":"^1.1.7","@beisen/jquery":"^1.10.5","@beisen/lodash":"^2.2.5","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"06e0eedc86086f7a9fadc1ee810d085e85a87ff3","_id":"@beisen/talent-no-require@1.0.5","_shasum":"d0e723497326b313f7006f11b8a26c4e5a8f1547","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"d0e723497326b313f7006f11b8a26c4e5a8f1547","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.5.tgz","integrity":"sha512-ovoZjWZB/EDEe0760teTBqdjH9MvkQz9iupepVzZMsNT4n3JKG4movDtHyazmyIN272gTeCFMQ3kID1afdgFTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5YVjB/BI/Ng4h/yYK5lm9/HDdQBo2tfxs1ZLWwrEzKwIgOUFqw1y4IVR3pLYK3m5MrsSIEEkcaVivdc8NfoYHroo="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.5.tgz_1509619138215_0.8881298436317593"}},"1.0.6":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.6","dependencies":{"@beisen/backbone":"^1.1.7","@beisen/jquery":"^1.10.5","@beisen/lodash":"^2.2.5","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"33a80433d4dbd0db2c9076c6aa100a22eda9f63c","_id":"@beisen/talent-no-require@1.0.6","_shasum":"a7b348dd948b1175af251c93c8ed99f5a6dd2d7f","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"a7b348dd948b1175af251c93c8ed99f5a6dd2d7f","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.6.tgz","integrity":"sha512-exQcCDREOP63yoldDiYiVtAQN2qR1FecjgXPH+LQWx8Y8iS92fS9nbxDRKy3L9JTGHnAMLg9107V+BbqhPg9Rg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsKH4raIHXB28qe8TiGwuX74Q3Uy1essEtjAWo926dQAiEA6s8qL/JCdgqEKBTocSkE+NVlBaobSjhUFw4ax4zujgY="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.6.tgz_1509620078653_0.0371893250849098"}},"1.0.7":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.7","dependencies":{"@beisen/backbone":"^1.1.7","@beisen/jquery":"^1.10.5","@beisen/lodash":"^2.2.5","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"ac678460f5b65de212979ad9b09ec3d36906d21a","_id":"@beisen/talent-no-require@1.0.7","_shasum":"e7d9c189863ee3de827c585214e039a150f4207a","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"e7d9c189863ee3de827c585214e039a150f4207a","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.7.tgz","integrity":"sha512-0dP7YJnxTAlB0bL9G/KRYHIMQ/VmISsE5obC89L4HQ37wxF9K1cgGMkqKSVWyv1FTweMHZnKKAhJwHSOrb8r8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGxJBFUxh2gaEkp7HNxLWPl6gib46NZBTpvoSKgcOdlAAiARHLOccYMqLC6WIR8dBlqkaGbsqzWN+7qHe8L2wsLIZg=="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.7.tgz_1509719260523_0.9592684870585799"}},"1.0.8":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.8","dependencies":{"@beisen/backbone":"^1.1.7","@beisen/jquery":"^1.10.5","@beisen/lodash":"^2.2.5","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"34da795e48e27dc9669c8a50d4ba78b57f422632","_id":"@beisen/talent-no-require@1.0.8","_shasum":"0e75e62f22462e8b8164080333fb6916a2546005","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"0e75e62f22462e8b8164080333fb6916a2546005","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.8.tgz","integrity":"sha512-ASceBfeFXr92OsUf1HMzbFs9ksvluM89Ot/jHJ+bsq6yunw74OdN5XtzxZ1Ciyn2XWB2VkrV/TUiSGxYPOF1Rw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAE615pWaReDLxiS/Ii2phrWEzD2faAdAnkCmIPv4zBPAiAJ/qBshVqXsXGMbRU1ZnQraDAX3NOL6t316ZtSLBVd0A=="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.8.tgz_1510839030874_0.28044361830689013"}},"1.0.9":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.9","dependencies":{"@beisen/backbone":"^1.1.7","@beisen/jquery":"^1.10.5","@beisen/lodash":"^2.2.5","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"50e0850b50dfcbb3ef137bb59ad561cb33910676","_id":"@beisen/talent-no-require@1.0.9","_shasum":"470f9b30591acb5ca4549a664c9632cf5ec7588a","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"470f9b30591acb5ca4549a664c9632cf5ec7588a","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.9.tgz","integrity":"sha512-7Cp4emD+O5cJ9/H5FfGaIjZWOu0IgiYiGJwLL6690fepybwCs9v87ZDqg67WF3Gvxx+K09d/rPyKgkAms8Bp9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBrv+YkKgXBO+WnA2N32dPFJVcIvVK/qRtfDzPlOpVXhAiEAjcCdvcvKI3ZDYltquvIlveOAF5RQtcRcpFhDrXGBTj8="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.9.tgz_1510842909423_0.25511549785733223"}},"1.0.10":{"name":"@beisen/talent-no-require","author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"description":"Beisen TalentJS Framework","main":"index-es6.js","version":"1.0.10","dependencies":{"@beisen/backbone":"^1.1.7","@beisen/jquery":"^1.10.5","@beisen/lodash":"^2.2.5","grunt":"~0.4.1","grunt-contrib-connect":"~0.5.0","grunt-contrib-jst":"~0.5.0","grunt-contrib-watch":"~0.4.3"},"devDependencies":{"grunt-contrib-requirejs":"^0.4.4","grunt-contrib-symlink":"~0.3.0","grunt-preprocess":"~3.0.1","load-grunt-tasks":"~0.5.0"},"directories":{"doc":"docs"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"license":"ISC","gitHead":"defc4ddffbc4ef46d2fdbbd46b7cad246486685d","_id":"@beisen/talent-no-require@1.0.10","_shasum":"e9a0650969957704f02c199841948e115f804477","_from":".","_npmVersion":"3.8.3","_nodeVersion":"5.10.1","_npmUser":{"name":"beisencorp","email":"ci@beisen.com"},"dist":{"shasum":"e9a0650969957704f02c199841948e115f804477","tarball":"https://registry.npmjs.org/@beisen/talent-no-require/-/talent-no-require-1.0.10.tgz","integrity":"sha512-KcA90Xjd0MV4IgNdYKf6fNTz3mnBg1n2H86PZVzDJCuZTsCSSdjasGTKC9q/sYRXn+XzITh2+LrdviTHOwfTxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEU1tYgFD/3qXwZ7dsGunCXn5RiLhDWk5CBXw//1oXdDAiEAmJas7rjsHIRyT1CwBOA4lUnzMPlIpNTxkdxVdYgHqLM="}]},"maintainers":[{"email":"it1011@qq.com","name":"lgm"},{"email":"ci@beisen.com","name":"beisencorp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/talent-no-require-1.0.10.tgz_1510883137638_0.6507450067438185"}}},"readme":"# TalentJS Framework\n## 本地运行\n* 安装[nodejs](http://ux.beisen.co/redmine/attachments/download/2/node-v0.8.18-x64.msi)；\n* 安装bower和grunt：`npm -g install bower grunt-cli`；\n* 获取项目源码：`git clone <项目地址>`；\n* 进入项目源码目录；\n* 安装node modules：`npm install`；\n* 安装JS库：`bower install`；\n* 运行项目：`grunt server`在本地8000端口启动server，并在默认浏览器打开起始页面；\n\n\n## 编码规范\n- 文件命名: 小写，中划线分隔；\n- 文件格式：utf-8无BOM；\n- 代码缩进：tab, 4个空格的大小；\n- 变量：驼峰式写法，如: userName；\n- 类名：头字母大写，如：UserModel；\n- MVC所涉及的类，需要增加类型后缀，如：DetailView, JobsPageView, UserCollection；\n- 文件命名: 小写，中划线分隔，如: user-item-view.js, user-model.js；\n- 页面视图类的文件名全部为index-page-view.js；\n- 普通视图类的文件名全部为“-view.js”结尾；\n- 对于this的别名，请使用：var self = this；\n\n\n----------\n## 主要视图类的详细说明\n\n\n## ItemView\n\n### 简述\n\n用于简单地渲染一个模板。\n其render方法会将模板与数据绑定，并将结果渲染至$el中。\n\n### 使用示例\n\n```\nMyView=Talent.ItemView.extend({\n    template: jst['home/index-page']\n});\n```\n\n### 属性\n\n#### ui\n\n一组hash表，获取view对应模板内的dom元素。\n如下例所示，render前，this.ui.checkbox为字符串；render后，为jquery对象。\n\n```\nui:{\n    checkbox:\"input[type=checkbox]\"\n},\n,events:function(){\n    var events = {};\n    events['click ' + this.ui.checkbox] = 'clickHandler';\n    return events;\n}\nonRender: function() {\n    if (this.model.get('selected')) {\n        this.ui.checkbox.addClass('checked');\n    }\n}\n```\n\n#### modelEvents\n\n对model中发生的事件绑定相应的事件监听函数。\n\n```\nmodelEvents: {\n    \"change\":\"modelChanged\"\n}\n```\n\n#### collectionEvents\n\n对collection中发生的事件绑定相应的事件监听函数。\n\n```\ncollectionEvents: {\n    \"add\":\"modelAdded\"\n}\n```\n\n### 方法\n\n#### serializeData\n\n该方法用于处理向模板中传入的数据，它的返回值必须为json对象。\nItemView传入的model或collection数据不适合直接渲染时，可用该方法。\n\n```\nserializeData: function(){\n    return {\n        \"some attribute\": \"some value\"\n    }\n}\n```\n\n### 方法回调\n\n#### onRender\n\n该方法在render后执行。你可以向其中加入你希望在view render之后执行的代码。\n\n## CompositeView\n\n### 简述\n\n包含一个模板和一个可迭代区域。可迭代区域中的每个条目由ItemView负责渲染。\n\n### 使用示例\n\n```\nvar MyItemView = Talent.ItemView.extend({\n    template : Talent._.template('<li><%=text%></li>')\n});\nTalent.CompositeView.extend({\n    template : '<h1>Hello</h1><ul></ul>',\n    itemViewContainer : 'ul',\n    itemView: MyItemView\n});\n```\n\n### 属性\n\n#### itemView\n\n用于指定渲染每个迭代条目的视图类，其必须是ItemView的子类；必选参数；\n\n#### itemViewContainer\n\n用于指定迭代区域。该方法指定一个DOM节点，用来包含所有迭代条目。必选参数。\n\n#### itemViewOptions\n\n从compositeView中传入到itemView中的参数。\n\n```\nvar MyItemView = Talent.ItemView.extend({\n    initialize: function(options){\n        console.log(options.foo); // => \"bar\"\n    }\n});\n\nTalent.CompositeView.extend({\n    template : jst['common/todo-composite'],\n    itemViewContainer : 'ul',\n    itemView: MyItemView,\n    itemViewOptions : {\n        foo : \"bar\"\n    }\n});\n```\n\n当itemViewOptions中的值需要在运行时通过计算得出时，它也可以被定义为一个函数，必须返回一个对象。\n\n```\nTalent.CompositeView.extend({\n    itemViewOptions: functioin(model, index){\n        // 计算部分\n        return {\n            foo: \"bar\",\n            itemIndex: index\n        }\n    }\n});\n```\n\n#### emptyView\n\ncollection为空时在compositeView内渲染的视图类。\n\n#### children\n\n获取compositeView中所有的itemView\n\n\n### 方法\n\n#### buildItemView\n\n自定义itemView的实例化过程。\n\n```\nbuildItemView: function(item, ItemViewType, itemViewOptions){\n    // 为ItemView构建最终的参数列表\n    var options = _.extend({model: item}, itemViewOptions);\n    // 实例化\n    var view = new ItemViewType(options);\n    return view;\n}\n```\n\n#### appendHtml\n\n自定义itemView实例插入到dom结点的过程。\n默认情况下，compositeView把每个itemView添加到缓存元素中，在最后通过jQuery的.append方法把所有itemView添加到compositeView的el中。\n\n```\nTalent.CompositeView.extend({\n        //第一个参数是compositeView实例，\n        //第二个参数是当前itemView实例，\n        //第三个参数itemView对应的model在collection中的序号。\n    appendHtml: function(compositeView, itemView, index){\n        if (compositeView.isBuffering) {\n            //在事件重置和初始化渲染时缓存，减少向document插入元素的次数\n            compositeView.elBuffer.appendChild(itemView.el);\n        }\n        else {\n                        //如果compositeView已经被渲染，\n                        //直接把新的itemView添加到compositeView中\n            cmopositeView.$el.append(itemView.el);\n        }\n    }\n});\n```\n\n#### close\n\nclose方法执行以下操作 ：\n\n - 解除所有listenTo事件\n - 解除所有自定义view事件\n - 解除所有DOM事件\n - 解除所有已渲染的item views\n - 从DOM中移除this.el节点\n - 如果设置了onClose事件回调函数，调用onClose函数\n\n\n### 事件回调\n\n#### onRender\n\nview渲染完成后，对view对应的dom结构进行其它操作。\n\n#### onClose\n\n在view close后执行。\n\n#### onBeforeItemAdded\n\nitem实例即将被添加到compositeView之前执行。\n\n```\nonBeforeItemAdded: function(itemView){\n    //操作代码\n}\n```\n\n#### onAfterItemAdded\n\nitem实例被添加到compositeView之后执行。\n\n```\nonAfterItemAdded: function(itemView){\n    //操作代码\n}\n```\n\n#### onItemRemoved\n\n当item实例从compositeView中移除时执行。\n\n```\nonItemRemoved: function(itemView){\n    // 操作代码\n}\n```\n\n### 事件\n\n以下事件函数在相应事件发生时被调用。\n\n#### render\n#### closed\n#### before:item:added\n#### after:item:added\n#### item:removed\n\n```\nMyView = Talent.CompositeView.extend({...});\n\nvar myView = new MyView();\n\nmyView.on(\"render\", function(){\n    alert(\"the collection view was rendered!\");\n});\n\nmyView.on(\"colsed\", function(){\n    alert(\"the collection view was closed!\");\n});\n```\n\n```\nvar MyCV = Talent.CollectionView.extend({\n    // ...\n\n    onBeforeItemAdded: function(){\n        // ...\n    },\n\n    onAfterItemAdded: function(){\n        // ...\n    }\n});\n\nvar cv = new MyCV({...});\n\ncv.on(\"before:item:added\", function(viewInstance){\n    // ...\n});\n\ncv.on(\"after:item:added\", function(viewInstance){\n    // ...\n});\n\ncv.on(\"item:removed\", function(viewInstance){\n    // ...\n});\n```\n\n## Layout\n### 简述\n\n具有若干可局部刷新的区域(region)\n\n### 使用示例\n\n```\nMyLayout = Talent.Layout.extend({\n  template: \"#my-layout-template\",\n  regions: {\n    menu: \"#menu-bar\",\n    content: \"#main-content\"\n  } \n});\nvar myLayout = new MyLayout();\nmyLayout.render();\n//myMenu在这里可以是ItemView或CompositeView的实例\nmyLayout.menu.show(myMenu);\n```\n\n### 属性\n\n#### regions\n\n定义Layout中的Region。通过函数定义，该函数返回一个定义Region的对象。\n\n```\nregions: function(options){\n    return {\n        fooRegion: \"#foo-element\"\n    };\n}\n```\n\n### 方法\n\n#### show\n\n渲染view并将它添加到el元素中。\n\n#### addRegion \n\n向Layout中添加Region，一次只能添加一个。\n\n```\nvar layout = new MyLayout();\n\n// ...\n\nlayout.addRegion(\"foo\", \"#foo\");\n```\n\n#### addRegions \n\n向Layout中添加Region，一次可以添加多个。\n\n```\nvar layout = new MyLayout();\n\n// ...\n\nlayout.addRegions({\n    foo: \"#foo\",\n    bar: \"#bar\"\n});\n```\n\n#### removeRegion\n\n移除Layout中的Region。\n\n```\nvar layout = new MyLayout();\n\n// ...\n\nlayout.removeRegion(\"foo\");\n```\n\n### 自定义Region Type\n\n用于将默认的Region类替换为你自定义的Region类。\n\n```\nMyLayout = Talent.Layout.extend({\n    regionType: SomeCustomRegion\n});\n```\n\n也可以分别向每个region设置不同的Region类。\n\n```\nAppLayout = Talent.Layout.extend({\n    template: \"#layout-template\",\n\n    regionType: SomeDefaultCustomRegion,\n\n    regions: {\n        menu: {\n            selector: \"#menu\",\n            regionType: CustomRegionTypeReference\n        },\n        content: {\n            selector: \"#content\",\n            regionType: CustomRegionType2Reference\n        }\n    }\n});\n```\n\n## Region\n\n### 简述\n\n需要经常变动内部视图的区域。其最重要的特性为在改变内部视图后旧视图会从DOM中移除。\n\n### 使用示例\n\n```\nAppLayout = Talent.Layout.extend({\n    template: \"#layout-template\",\n\n    regions: {\n        menu: \"#menu\",\n        content: \"#content\"\n    }\n});\nvar layout = new AppLayout();\nlayout.render();\nlayout.menu.show(new MenuView());\nlayout.content.show(new MainContentView());\n```\n\n### 属性\n\n#### currentView\n\n设置绑定到Region中的view。该view不会渲染或显示。\n\n```\nvar myView = new MyView({\n    el: $(\"#existing-view-stuff\")\n});\n\nvar region = new Talent.Region({\n    el: \"#content\",\n    currentView: myView\n});\n```\n\n### 方法\n\n#### show\n\n渲染并将view添加到DOM树中。每次调用show方法时会自动调用close关闭旧view。可以通过{preventClose: true}参数阻止close行为。\n\n```\n// 显示myView\nvar myView = new MyView();\nMyApp.mainRegion.show(myView);\n\n// anotherView替换掉myView。自动调用close方法\nvar anotherView = new AnotherView();\nMyApp.mainRegion.show(anotherView);\n\n// anotherView2替换anotherView。阻止调用close方法\nvar anotherView2 = new AnotherView();\nMyApp.mainRegion.show(anotherView2, { preventClose: true });\n```\n\n#### reset\n\n自动关闭所有显示的view并删除缓存的el元素。region下一次显示view时，el重新从DOM中获取。\n\n#### open\n\n改变视图添加到region中的过程。\n默认的open方法为：\n\n```\nTalent.Region.prototype.open = function(view){\n    this.$el.empty().append(view.el);\n}\n```\n\n重写open方法添加其它效果\n\n```\nTalent.Region.prototype.open = function(view){\n    this.$el.hide();\n    this.$el.html(view.el);\n    this.$el.slideDown(\"fast\");\n}\n```\n\n#### attachView\n\n向Region中添加view，添加的view不会渲染或显示。\n\n```\nMyApp.addRegions({\n    someRegion: \"#content\"\n});\n\nvar myView = new MyView({\n    el: $(\"#existing-view-stuff\")\n});\n\nMyApp.someRegion.attachView(myView);\n```\n\n### 事件\n#### beforeShow\n\n当view已经渲染完成，但是尚未添加到DOM中时调用。\n\n#### show\n\nview渲染完成并添加到DOM中后调用。\n\n#### close\n\n当view被关闭之后调用。\n\n```\nMyApp.mainRegion.on(\"before:show\", function(view){\n  // manipulate the `view` or do something extra\n  // with the region via `this`\n});\n\nMyApp.mainRegion.on(\"show\", function(view){\n    // manipulate the `view` or do something extra\n    // with the region via `this`\n});\n\nMyApp.mainRegion.on(\"close\", function(view){\n    // manipulate the `view` or do something extra\n    // with the region via `this`\n});\n\nMyRegion = Backbone.Marionette.Region.extend({\n    // ...\n\n    onBeforeShow: function(view) {\n        // the `view` has not been shown yet\n    },\n\n    onShow: function(view){\n        // the `view` has been shown\n    }\n});\n\nMyView = Talent.ItemView.extend({\n    onBeforeShow: function() {\n        // called before the view has been shown\n    },\n    onShow: function(){\n        // called when the view has been shown\n    }\n});\n```\n\n#### 实例化自定义Region\n\n当我们想在应用运行之后向其中添加region时，就要按照上文中的方法扩展Region类，并在应用中实例化，如下所示：\n\n```\nvar SomeRegion = Talent.Region.extend({\n    el: \"#some-div\",\n\n    initialize: function(options){\n      // your init code, here\n    }\n});\n\nMyApp.someRegion = new SomeRegion();\n\nMyApp.someRegion.show(someView);\n```\n\n注意region必须要有一个元素与自身绑定，如果在添加region实例到应用或Layout中时没有指定选择器的话，在定义时也必须声明el属性。\n\n#### 添加自定义Region Types\n\n通过addRegions将自定义Region Type添加到应用中。\n\n```\nvar FooterRegion = Talent.Region.extend({\n    el: \"#footer\"\n});\n\nMyApp.addRegions({\n    footerRegion: FooterRegion\n});\n```\n\n也可以在添加时声明一个选择器。\n\n```\nvar FooterRegion = Talent.Region.extend({\n    el: \"#footer\"\n});\n\nMyApp.addRegions({\n    footerRegion: {\n        selector: \"#footer\",\n        regionType: FooterRegion\n    }\n});\n```\n","maintainers":[{"email":"albertzhang.pro@gmail.com","name":"albert-zhang"},{"email":"liugenpeng@beisen.com","name":"liugenpeng"},{"email":"ci@beisen.com","name":"beisencorp"},{"email":"it1011@qq.com","name":"lgm"},{"email":"lihegaozhong@gmail.com","name":"neozw"}],"time":{"modified":"2022-06-12T15:09:23.163Z","created":"2017-10-27T06:32:14.975Z","0.1.2":"2017-10-27T06:32:14.975Z","1.0.3":"2017-10-27T06:55:11.859Z","1.0.4":"2017-10-30T05:58:21.650Z","1.0.5":"2017-11-02T10:38:58.475Z","1.0.6":"2017-11-02T10:54:38.866Z","1.0.7":"2017-11-03T14:27:40.852Z","1.0.8":"2017-11-16T13:30:31.196Z","1.0.9":"2017-11-16T14:35:10.414Z","1.0.10":"2017-11-17T01:45:37.875Z"},"repository":{"type":"git","url":"git@gitlab.beisencorp.com:ux-js/ux-talent.git"},"author":{"name":"xuchengyun","email":"xuchengyun@beisen.com"},"license":"ISC","readmeFilename":"README.md"}