2014-07-18 3 views
0

한 지침에서 값을 얻기 위해 나의 index.html을어떻게 다른 지시 아래

<body ng-controller="MainCtrl"> 

    <search myname="myval" change-client='client()'></search> 
<pagination></pagination> 
    </body> 

</html> 

이며, 아래

var app = angular.module('plunker', []); 


app.directive('search', function($rootScope) { 
    return { 

     scope: 
     { 
     myname:'=', 
     changeClient : '&' 


     }, 
     restrict: 'AE', 
     replace: true, 
     template: '<div><input type ="text" ng-model = "bankname">{{myname}}</div>', 
     link: function(scope, elm, attrs) { 

     scope.$watch('bankname',function(newVal){ 
     //alert("inside search"+scope.bankname); 
     $rootScope.myname = scope.bankname; 
     scope.changeClient(); 
      }); 


     } 

    }; 
}); 
app.directive('pagination', function($rootScope) { 
    return { 

     restrict: 'AE', 
     replace: true, 
     template: '<div><h1>from pagination</h1></div>', 
     link: function(scope, elm, attrs) { 
     // alert("inside pagination"+$rootScope.myname); 

     scope.$watch('bankname',function(newVal){ 
     alert("inside pagination"+scope.bankname); 

      }); 


     } 

    }; 
}); 
app.controller('MainCtrl', function($scope,$rootScope) { 

$scope.client = function() { 

$scope.myval = $rootScope.myname; 
// alert("in controller"+$scope.myval); 
} 
}); 

이 plunker에 대한 링크입니다 app.js

http://plnkr.co/edit/RdKOKMV5Cf6yTXx5PZMt?p=preview

내가 얻으려고하는 것은 텍스트 상자에 값을 입력 할 때 검색에서 그 값을 얻는 것입니다. 지시문을 사용하지만 페이지 매김 지시어 링크 기능을 사용하지 않는 방법 페이지 매김 지시문 링크 함수에서 값을 얻는 방법을 알려주십시오.

답변

0

MainCtrl의 범위를 사용할 수 있습니다. 지시어의 범위는 MainCtrl 's의 하위 항목입니다. 이 도움이

app.directive('search', function($rootScope) { 
    return { 
    restrict: 'AE', 
    replace: true, 
    template: '<div><input type ="text" ng-model = "bankname">{{myname}}</div>', 
    }; 
}); 

app.directive('pagination', function($rootScope) { 
    return { 
    restrict: 'AE', 
    replace: true, 
    template: '<div><h1>from pagination</h1></div>', 
    link: function(scope, elm, attrs) { 
     scope.$watch('bankname',function(oldVal, newVal){ 
     if(oldVal !== newVal) { 
      alert("inside pagination : "+scope.bankname); 
     } 
     }); 
    } 
    }; 
}); 

희망 :

이보십시오.

+0

위의 코드에서 내 코드 이외의 변경 사항을 찾지 못했습니다. 설명해주세요. – user3824049

+0

검색 지시문에서 격리 된 범위가 제거되어 입력 데이터가 MainCtrl의 범위에 바인딩됩니다. 페이지 매김 지시문에 사용합니다. – soomong

+0

scope.bankname에 대한 정의되지 않은 값을 얻고 있습니다. 그러나 코드의 다른 부분에 격리 된 범위를 사용해야합니다. 격리 된 범위를 제거하지 않고이 작업을 수행 할 수 있습니까? – user3824049