2016-02-11 4 views
2

После того, как я изменил значение переменной в контроллере и скомпилировал директиву, я по-прежнему получаю старое значение самой переменной вместо нового. В идеале, я думаю, что для кода ниже я должен получить результат как «Новая ценность», но я получаю «Старую ценность». Пожалуйста помоги!Как получить измененные переменные области видимости после компиляции директивы

Мой контроллер:

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; 
}) 
+0

$ компиляции отсутствует, как инъекции на ваш код контроллера. –

+0

Зачем нужно компилировать, изменяя значение области. Есть и другой способ отслеживать это. Пожалуйста, объясните свое первоначальное требование. –

+1

В функции привязки директивы вы называете первый аргумент 'scope'; но в следующем выражении 'if' вы используете' $ scope'. – georgeawg

ответ

0

Предположим, у вас есть директива <new-dir></new-dir>

Вы можете сделать, что видимый на вызов функции, используя переменную как var1

$changeName = function(){ 
     $scope.var1 = true; 
    } 

затем использовать этот шаблон представления, как

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

Смежные вопросы