如何在编译指令后获取更改的范围变量

时间:2016-02-11 05:27:40

标签: angularjs angularjs-directive angularjs-scope

在我更改控制器中的变量值并编译指令后,我仍然得到变量本身的旧值而不是new。理想情况下,我认为对于下面的代码,我应该得到“新价值”的结果,但我得到的是“旧价值”。请帮忙!

我的控制器:

app.controller("MainCont",['$compile', function($scope,$http,$compile){
        $scope.var1 = false;
        $changeName = function(){
            $scope.var1 = true;
            angular.element(someElement).append($compile("<new-dir></new-dir>")($scope));
        }
    }]);

我的指示

app.directive("newDir",function(){
    var directive = {
        restrict: 'E',
        controller: 'MainCont',
        link: function(scope,element){
            if(!scope.var1){
                console.log("Old Value");
            }else{
                console.log("New Value");
            }

        }
    }
    return directive;
})

1 个答案:

答案 0 :(得分:0)

假设您有一个指令<new-dir></new-dir>

您可以使用var1

之类的变量在函数调用中使其可见
    $changeName = function(){
        $scope.var1 = true;
    }

然后将此视图模板用作

<new-dir ng-if="var1"></new-dir>