角度范围$watch()等效于Rivets.js
Angular scope.$watch() equivalent in Rivets.js
在angularjs中,scope.$watch()
可用于每次变量值发生变化时执行函数。
scope.$watch('myvar', function(newValue, oldValue) {
changeCallback();
});
(angularjs示例只是为了显示我想做什么。我只想使用rivets.js,而不是angularjs.)
我可以在元素上使用一个可以更改值的事件侦听器,但我必须在变量值可能更改的任何地方都有事件侦听器。
<input type='text' rv-on-change='changeCallback' rv-value='myvar'>
或者,如果值从javascript代码中更改,我也必须从那里执行更改函数。
myvar = 'changed value';
changeCallbacl()
问:有没有一种方法可以在每次rivers.js中的变量值发生变化时执行函数,而不在值发生变化的另一端添加任何代码?
在此处找到解决方案http://jsfiddle.net/nsisodiya/2mkjx44j/。您需要使用瞄准器,它是铆钉的依赖项,并包含在铆钉.bundled.min.js.中
// configure sightlass with same adapters as rivets
sightglass.adapters = rivets.adapters;
sightglass.root = '.';
// listen for changes on list.val
// list is an object and val is property to listen for changes on
sightglass(list, 'val', function() {
log('value changed...');
});
这是一个关于codepen的工作示例http://codepen.io/mstadius/pen/azroda
这是相同样本的代码
html
<div id='app'>{list.val}<br>
<input rv-value='list.val'><br>
<button rv-on-click='list.reset'>Reset</button>
</div>
<div id='log'></div>
js
var log = function(msg){
$('#log').prepend('<div>'+msg+'</div>');
};
var list = {
val: 1
, reset: function(){
log('Clicked reset...');
list.val = 1;
}
};
var a = rivets.bind($('#app'), {list: list});
sightglass.adapters = rivets.adapters;
sightglass.root = '.';
sightglass(list, 'val', function() {
log('value changed...');
});
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 要求未定义JS回调参数
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 使用Rivets.js输出类
- 角度范围$watch()等效于Rivets.js
- 如何将 HTML 选择绑定到 Rivets.JS 中的模型值
- Rivets.js属性依赖于几个字段
- 保存来自Rivets.js对象的数据
- rivets.js:在init上用视图中的数据预填充模型
- 使用Rivets.js和Backbone深度模型绑定和访问嵌套元素
- 如何用Rivets JS绑定一个新对象到视图