【发布时间】:2014-07-28 17:32:06
【问题描述】:
我正在构建一个 JS 框架来模拟 AngularJS 模型,仅用于教育目的。
问题是:我在模型(输入)更新时分配了一个回调来运行,但在它们第一次运行后,它们“消失”了。
在尝试使用 jQuery 执行此操作之前,我尝试使用 querySelectorAll 并遇到了同样的问题。
这里是:http://jsfiddle.net/YmY2w/
HTML
<div class="container" jd-app="test">
<input type="text" jd-model="name" value="foo" /><br />
<input type="text" jd-model="email" value="foo@foo" />
<hr />
<p>Name: {{ name }}</p>
<p>Email: {{ email }}</p>
</div>
JAVASCRIPT
(function($, window, document, undefined) {
'use strict';
// registering models
(function() {
var $app = $('[jd-app]');
var $models = $('[jd-model]', $app);
$models.each(function(index) {
UpdateModel.apply(this);
});
function UpdateModel() {
var model = { name: $(this).attr('jd-model'), value: this.value }
var re = new RegExp('{{\\s+('+ model.name +')\\s+}}', 'gm');
$('*', $app).each(function(index) {
var $this = $(this);
$this.text( $this.text().replace(re, model.value) );
});
$(this).on('keyup', UpdateModel);
}
})();
})(jQuery, window, document);
我做错了什么?有没有更好的方法来做到这一点?
【问题讨论】:
标签: javascript jquery angularjs callback