지침에서 컨트롤러로 양방향 데이터 바인딩이 필요합니다. 지침은 ng-repeat를 사용합니다. 몇 가지 시도했지만 지시기 범위 변수를 컨트롤러에 반영 다시 가져올 수 없습니다. 내가 실종 무엇 http://jsfiddle.net/keshav89/sezknp1t/1/AngularJS : 양방향 데이터 바인딩 - ng-repeat 명령 - 작동하지 않음
:
angular.module("myApp", [])
.controller("Ctrl1", function ($scope) {
$scope.crossTabs = [1,2,3,4,5];
})
.directive("crossTab", function() {
return {
restrict: "E",
template: "<input type='text' ng-model='crossTab'/><button ng-click='changeLols()' id='clc'>change crossTabs</button>",
scope: {
crossTabs: '=',
crossTab: '='
},
controller: function($scope){
$scope.changeLols = function(){
// The below comment line is not working. It doesnt change anything. But the one uncommented which pushes an element updates the controllers 'crossTabs' variable as well.
//$scope.crossTabs = [3,4,5];
$scope.crossTabs.push(6);
}
},
link: function (scope, elem, attrs) {
}
}
});
HTML 여기
<div ng-app="myApp" ng-controller="Ctrl1">
<div> Controller: {{ crossTabs }}</div><br>
<h5>Directive Section below</h5>
<cross-tab ng-repeat="crossTab in crossTabs" cross-tab="crossTab" cross-tabs="crossTabs"></cross-tab>
</div>
는 jsfiddle입니다. 나는 링크 기능을 사용해 보았지만 아무 소용이 없었다.
우리가 알고있는 ng-repeat는 부모 (이 경우 컨트롤러)의 범위를 상속하지만 자신의 경우에 'crossTab'의 값인 새 속성으로 프로토 타입 상속을 만듭니다. 크로스 탭은 컨트롤러 범위이지만 crossTabs 않습니다. – squiroid
음. 그래서 문제는 디렉티브에서 crossTabs 변수를 변경하여 상위 컨트롤러의 범위에 반영하도록하려는 것입니다. 그것에 대해 어떻게 가야합니까? –
@ 스퀴 로이드 지금 당신이 말하려고했던 것을 알게되었습니다. 고마워요 –