我有两个指令,我希望它像这样使用它:
<m-list m-searchable></m-list>
所以这两个指令是m-list
和m-searchable
,现在我想在附加m-list
指令时访问和操作m-searchable
的范围。
我有这个:
'use strict';
angular.module('app')
.directive('mList', function () {
return {
restrict: 'E',
scope: {},
controller: function($rootScope) {
var vm = this;
vm.name = 'joey';
},
controllerAs: 'ctrl',
bindToController: true,
templateUrl: '...'
};
});
我的m-searchable看起来像这样:
angular.module('app')
.directive('mSearchable', function () {
return {
restrict: 'A',
scope: {},
controllerAs: 'ctrl',
bindToController: true,
replace: true,
controller: function($rootScope, $scope) {
// I want console.log the scope of the directive where I attached the `m-searchable`
}
};
});
我希望console.log
我附加m-searchable
的指令的范围。如何访问vm.name
?
答案 0 :(得分:0)
首先,我认为你会遇到$ compile错误,因为这两个指令试图在同一个元素上拥有自己的隔离范围。
https://docs.angularjs.org/error/ $编译/ multidir P0 = mList&安培; P1 = mSearchable&安培; P2 =新%2Fisolated%20scope&安培; P3 =%3CM列表%20米可搜索%3D%22%22%3E
更新:http://juristr.com/blog/2015/01/learning-ng-directives-access-scope-controller/
建议的更好方法是在控制器和放大器之间传递对象。指令
<m-list m-searchable name="name"></m-list>
app.directive('mList', function () {
return {
restrict: 'E',
scope: { name: "="},
controller: function($rootScope, $scope) {
var vm = this ;
vm.name = 'joey';
},
controllerAs: 'ctrl',
bindToController: true
};
});