Tôi không chắc chắn đây là cách để làm điều này, nhưng mục tiêu của tôi là như sau:Angularjs: đặt phụ huynh giá trị phạm vi chỉ thị với chỉ thị con
- Tôi có một chỉ thị mẹ
- Bên trong mẹ khối chỉ thị, tôi có một chỉ thị đứa trẻ đó sẽ nhận được một số đầu vào từ người dùng
- chỉ thị đứa trẻ sẽ đặt một giá trị trong phạm vi chỉ thị của cha mẹ
- tôi có thể lấy nó từ đó
Tất nhiên vấn đề là chỉ thị của cha mẹ và con là anh chị em ruột. Vì vậy, tôi không biết làm thế nào để làm điều này. Lưu ý - Tôi không muốn thiết lập dữ liệu trong
Fiddle: http://jsfiddle.net/rrosen326/CZWS4/
html:
<div ng-controller="parentController">
<parent-dir dir-data="display this data">
<child-dir></child-dir>
</parent-dir>
</div>
Javascript
var testapp = angular.module('testapp', []);
testapp.controller('parentController', ['$scope', '$window', function ($scope, $window) {
console.log('parentController scope id = ', $scope.$id);
$scope.ctrl_data = "irrelevant ctrl data";
}]);
testapp.directive('parentDir', function factory() {
return {
restrict: 'ECA',
scope: {
ctrl_data: '@'
},
template: '<div><b>parentDir scope.dirData:</b> {{dirData}} <div class="offset1" ng-transclude></div> </div>',
replace: false,
transclude: true,
link: function (scope, element, attrs) {
scope.dirData = attrs.dirData;
console.log("parent_dir scope: ", scope.$id);
}
};
});
testapp.directive('childDir', function factory() {
return {
restrict: 'ECA',
template: '<h4>Begin child directive</h4><input type="text" ng-model="dirData" /></br><div><b>childDir scope.dirData:</b> {{dirData}}</div>',
replace: false,
transclude: false,
link: function (scope, element, attrs) {
console.log("child_dir scope: ", scope.$id);
scope.dirData = "No, THIS data!"; // default text
}
};
});
Video từ Brian và kẻ cướp từ Jesus thật hoàn hảo. Tôi chỉnh sửa fiddle của tôi với một bổ sung - sử dụng một đồng hồ $ để liên tục cập nhật phạm vi chỉ thị của cha mẹ (nếu không nó chỉ xảy ra một lần trong plunker Chúa Giêsu). http://jsfiddle.net/rrosen326/7Dq4e/ –