【发布时间】:2015-06-01 11:36:36
【问题描述】:
我想要一个指令来观察属性表达式的结果,例如:
<div scroll-if="test === selectedTest"></div>
这样它就可以对更改做出反应并滚动到特定元素。我似乎在努力寻找如何观察该表达式的变化。
【问题讨论】:
标签: javascript angularjs angularjs-directive watch
我想要一个指令来观察属性表达式的结果,例如:
<div scroll-if="test === selectedTest"></div>
这样它就可以对更改做出反应并滚动到特定元素。我似乎在努力寻找如何观察该表达式的变化。
【问题讨论】:
标签: javascript angularjs angularjs-directive watch
使用$watch:
app.directive('scrollIf', function() {
return {
restrict: 'A',
link: function(scope, element, attributes) {
var actionScroll = function(newVal, oldVal) {
if(newVal!==oldVal) {
console.log("scrolling");
}
}
scope.$watch(attributes.scrollIf, actionScroll);
}
}
});
$watch 可以评估属性表达式scroll-if,如果该表达式为真,actionScroll 侦听器将运行。
需要添加条件newVal!==oldVal,因为actionScroll总是第一次运行。这在$watch documentation中进行了解释
【讨论】:
newVal!=oldVal 应该是newVal !== oldVal