0

Итак, вот моя проблема, я не могу получить свой $scope.documents для обновления из моей директивы. $scope.parentUpdate({ documents: $scope.docType}), похоже, совсем не выполняется, поэтому мои документы никогда не обновляются. $scope.docType= result получает все необходимые данные, но просто не возвращает его родительскому контроллеру.angularJS родительская область, не обновляющаяся с директивы

app.controller('docGridController',['$scope','getSideNav', 'getDocuments', 
      function($scope, getSideNav, getDocuments){ 

getSideNav().then(function(result){$scope.SideNav = result; 
}, 
        function(error){$scope.error = result;}); 

$scope.slideToggle = true; 


$scope.documents=[]; 

$scope.update = function(k){ 

    $scope.documents = k; 
    consle.log($scope.documents); 
}}]); 

app.directive('foSidenav',['getDocuments',function(getDocuments){ 

    return{ 

     replace: true, 
     scope: { 

      info:'=', 
      docType:'=', 
      parentUpdate:'&' 
     }, 
     templateUrl:function(element,attr){ 

      return attr.url; 
     }, 
     controller: ['$scope','$element', '$attrs' ,'getDocuments', 
         function($scope,$element, $attrs, getDocuments){ 

      $scope.selectDocType = function(id) 
      { 
       getDocuments(id).then(function(result){$scope.docType= result; 
        console.log($scope.docType); 
        alert('Printed results'); 
        $scope.parentUpdate({ documents: $scope.docType}); 
        }, 
        function(error){$scope.error = result;}); 


      }; 

     }] 
    }; 
}]); 

Вот тег, я использую в моем шаблоне

<ul class="side-nav"> 
        <li class="mainCat" ng-repeat=" item in info"> 
         <a href="#" id="CatHeader" ng-click="slideToggle =! slideToggle"> 
          <i class="{{item.displayIcon}} left-bar"></i> 
          <span ng-bind-html="item.label | html"></span> 
         </a> 
         <ul class="subCat slide-toggle" ng-show="slideToggle"> 


          <li ng-repeat="subItem in item.docTypes"> 
           <a href="#" ng-click="selectDocType(subItem.id)" > 
           <i class="fi-folder"></i> 
           <span ng-bind-html="subItem.Name | html"></span> 
           </a> 
          </li> 


         </ul> 
        </li>   

и вот директива вызова

<fo-sidenav url="{!URLFOR($Resource.FOPS_Resource, 'components/sidenav.html')}" info='SideNav' docType='documents' parentUpdate="update(documents)"></fo-sidenav>  

Любые идеи ?? эти возможности действительно отбрасывают меня

ответ

2

Я думаю, проблема в том, как вы используете переменные из выделенной области в html. Теперь вы их используете, как показано ниже:

<fo-sidenav url="{!URLFOR($Resource.FOPS_Resource, 'components/sidenav.html')}"info='SideNav' docType='documents' parentUpdate="update(documents)"></fo-sidenav> 

Попробуйте так:

<fo-sidenav url="{!URLFOR($Resource.FOPS_Resource, 'components/sidenav.html')}" info='SideNav' doc-type='documents' parent-update="update(documents)"></fo-sidenav> 

Для получения дополнительной информации о чтения Директивы Matching и Нормализация секции here

+0

Это сумасшедший !! ! Это сработало, почему оно имеет такое большое влияние? – Tekill

+1

вы можете прочитать разделы, которые я упомянул. – Ali