각도를 사용하면 지시문의 범위로 양방향 데이터 바인딩을 설정할 수 있습니다. 누구든지 지침의 컨트롤러로 양방향 데이터 바인딩을 설정하는 쉬운 방법을 알고 있습니까? 예를 들어각도의 지시자 컨트롤러와의 양방향 데이터 바인딩
: MyCtrl
의 test
변수 위의 예에서 http://plnkr.co/edit/TIxXrvYpP0na4xEeYLgS?p=preview
HTML
<body ng-app="myApp" ng-controller="MyCtrl as ctrl">
Controller Test: {{ctrl.test}}
<div dir test="ctrl.test"></div>
</body>
JS는
var MyCtrl = function($timeout) {
this.test = {msg: 'hello'};
var _this = this;
$timeout(function() {
_this.test = {msg: 'good bye'};
}, 1000);
}
angular.module('myApp', []).directive('dir', function() {
return {
scope: {
test: '='
},
template: '\
<div>Directive Scope Test: {{test}}</div>\
<div>Directive Controller Test: {{dCtrl.test}}</div>',
controller: function($scope) {
this.test = $scope.test;
},
controllerAs: 'dCtrl'
}
});
dir
지정 범위에 결합된다. 그러나 변수가 지시문의 컨트롤러 (this.test = $scope.test;
)에 할당되면 양방향 바인딩이 끊어집니다.
"controller as"구문을 사용할 때 스코프 변수와 컨트롤러 변수 사이를왔다 갔다하려는 것이 조금 어색하기 때문에 컨트롤러에 스코프 변수를 할당합니다. 그러나 내가 생각할 수있는 최상의 솔루션은 바로 $scope
의 변수에 직접 액세스하는 것입니다. 누구든지 "컨트롤러"스타일 컨트롤러와 더 잘 맞는 솔루션을 갖고 있습니까?
. 감사! 이것은 비늘을 기울일 수 있고 나를 1.3으로 바꾸게 할 수 있습니다. – rob
@rob 환영합니다 .. 내 새로운 프로젝트에서 업그레이드하게 해주는 더 많은 훌륭한 기능이 있습니다. :) – PSL