В моем проекте я хочу получить доступ к $ -области контроллера, но, поскольку моя область видимости находится внутри директивы, используется $ scope директивы ,Область действия директивы используется вместо области действия контроллера
Вот отличный пример того, что произошло. http://codepen.io/anon/pen/zrmeZw?editors=1010
Если я заменяю <card-panel>
тегами <div>
, все в порядке. Но с тегом <card-panel>
, $ scope используется, если область видимости на карте, а не область my-controller $.
Javascript
app = angular.module('BlankApp', ['ngMaterial']);
app.directive('cardPanel', function() {
return {
transclude: true,
template: '<div style="background:#fff" layout-margin layout-padding><div ng-transclude></div></div>',
restrict: 'E',
link: function (scope, element, attrs) {
}
};
});
app.controller('MyController', function($scope) {
$scope.myContent = '';
$scope.onChangeListener = function() {
console.log($scope.myContent);
console.log("toto");
}
});
HTML
<body ng-app="BlankApp" ng-cloak style="background:#f1f1f1" layout>
<div ng-controller="MyController">
<card-panel layout-margin>
<h1>MyDemo</h1>
<md-input-container class="md-block">
<label> demo </label>
<input ng-change="onChangeListener()" ng-model="myContent"> </input>
</md-input-contanier>
</card-panelr>
</div>
</div>
<!-- Angular Material requires Angular.js Libraries -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-animate.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-aria.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.min.js"></script>
<!-- Angular Material Library -->
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.js"></script>
</body>
</html>
Ok я могу сделать?
Спасибо