我正在尝试做这样的事情:
的index.html
<div ng-controller="MyController" menu>
<input ng-model="myVar"/>
<div slimscroll="{'height':menuheight,'alwaysVisible':true}">
<div id="menucontent" menu-content>
</div>
</div>
</div>
当输入字段中有文本时,它将对menu-content
指令执行过滤。在过滤时,menu-content
的高度会发生变化。
菜单指令:
angular.directive('menu', function(){
return function (scope, element) {
var menuContentHeight = $("#menucontent").height();
scope.menuContentHeight = function(){
return $("#menucontent").height();
};
scope.$watch(scope.menuContentHeight, function(newValue, oldValue) {
if (newValue !== oldValue) {
console.log('Changed!');
menuContentHeight = newValue;
adjustHeight();
}
},true);
function adjustHeight(){
// Perform height adjustment
}
};
});
所以,我要做的是使用scope.watch
来监控身高变化并进行更新。我的代码确实有效,但问题是它没有立即更新。
如果高度发生变化,如何立即更新高度?
答案 0 :(得分:0)
使用$ scope.apply()
scope.$watch(scope.menuContentHeight, function(newValue, oldValue) {
if (newValue !== oldValue) {
console.log('Changed!');
menuContentHeight = newValue;
adjustHeight();
$scope.apply(); //call digest cycle
}
},true);
这对你有用......