0

У меня есть глубокое понимание с угловым, и я не могу понять, что я делаю неправильно.AngularJs - transclude break ng-controller

У меня есть директива, окруженная ng-контроллером.

KApp.directive("testdirective", function ($compile) 
    { 
     return { 
      restrict: 'E', 
      transclude: true, 
      scope: { 
       test:"=" 
      }, 
      template: "<div>\ 
          <div style='width:120px'>\ 
          {{test}}\ 
          </div>\ 
          <div ng-transclude>\ 
          </div>\ 
         </div>" 
       }; 
    }); 


    KApp.controller('testCtrl', function ($scope) 
    { 

     $scope.someText ="not important" 

     $scope.pass = "1234"; 

     $scope.showPass = function() 
      { 
      //why the $scope.pass not updated via ng-model??? 
      alert($scope.pass) 
     } 


    }); 

HTML

<body ng-app="mainModule" ng-controller="appCtrl"> 
<div ng-controller="tsetCtrl"> 
<testdirective test="someText"> 
    <button style='width:120px' ng-click='showPass()'> 
    Click me 
      </button> 
     <input ng-model='pass' style='width:120px'> 
</testdirective> 
</div> 

ng-model="pass" связываются с $scope.pass = "1234"; и он должен обновляться пользователем.

Моя проблема:

$scope.pass делает не обновляется представлением, почему?

Полное описание - http://plnkr.co/edit/MsKm0LZtlQ45Yyq5Uw0d?p=preview
Просто нажмите на кнопку "мне просто" и выберите результат.

ответ

1

showPass() и ng-model относятся к различным областям после изменения значения ввода. Пожалуйста, см. this SO answer для более глубокого объяснения.

+0

Итак, как ввод получает значение 1234 ??? от контроллера! – cheziHoyzer

+0

Значение 1234 является примитивным, поэтому во внутреннем пространстве создается второй «проход», который переопределяет значение 1234 из внешней области (= контроллер). Пожалуйста, попробуйте. –

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