我正在尝试在我的一个指令ngModel
和我自己的指令上要求两个控制器。
父控制器应该注入到孩子的链接功能中,但我无法让它工作。我想知道我做错了什么......
app.directive('container', function () {
return {
transclude : true ,
template : "<div ng-transclude></div>",
controller : function ($scope) {
console.log('container controller');
$scope.v1 = '123';
$scope.f1 = function () {
console.log('f1');
};
},
link : function (scope, element) {
console.log('container link');
}
};
});
app.directive('single', function () {
return {
require : ['^container','ngModel'],
scope : false ,
link : function (scope, element, attrs , parentsCtrl) {
console.log('single link');
console.log(parentsCtrl);
var containerParent = parentsCtrl[0];
var ngModel = parentsCtrl[1];
// FAIL //
console.log(containerParent.v1);
containerParent.f1();
}
};
});
和HTML
<div container>
<input single type="text" ng-model="my.value" />
</div>
single
指令注入两个控制器的构造函数,但container
控制器为空。我希望找到v1
属性和f1
函数。
答案 0 :(得分:8)
使用require
链接功能访问控制器对象,不是控制器的范围。所以这个:
$scope.v1 = '123'; // WRONG
应该是:
this.v1 = '123'; // RIGHT
以containerParent.v1
进行访问。