指向角度表元素高度

时间:2015-03-16 13:52:54

标签: javascript angularjs

我正在尝试做这样的事情:

的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来监控身高变化并进行更新。我的代码确实有效,但问题是它没有立即更新。

如果高度发生变化,如何立即更新高度?

1 个答案:

答案 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);

这对你有用......