讓我們說我有這樣的HTML:定義我自己的 '需要' 的指令,但拋出的錯誤 - AngularJs
<div ng-controller="MyCtrl">
<br>
<my-directive my-name="name">Hello, {{name}}!</my-directive>
</div>
這個簡單控制器:
myApp.controller('MyCtrl', function ($scope) {
$scope.name = 'Superhero';
});
而且我有一個指令,我想用require
來改變'name'
這樣的:
myApp.directive('myDirective', function($timeout) {
var controller = ['$scope', function ($scope) {
$scope.name = "Steve";
}];
return {
restrict: 'EA',
require: 'myName',
controller: controller,
link: function(scope, element, attrs, TheCtrl) {
TheCtrl.$render = function() {
$timeout(function() {
TheCtrl.$setViewValue('StackOverflow');
}, 2000);
};
}
};
});
但拋出:
Error: No controller: myName
這裏是fiddle
但是,如果我用NG-模式實現它,工作。看看這個其他fiddle
我有read,如果你在一個指令中使用'require'
,你需要一個控制器。
所以:
我在做什麼是錯誤的?這不是這樣嗎?我需要做其他事情嗎?
錯誤告訴你問題是什麼,myName不是控制器。 Require需要尋找一個控制器,'my-name'只是你在'my-directive'上定義的一個屬性。 – Brian
解釋你期望這個'require'需要做什麼?有限的代碼顯示,根本沒有意義使用 – charlietfl
@Brian你看到第二個小提琴嗎?比較兩個小提琴的,然後再告訴我。 'require:'ngModel','是一個指令,它有自己的控制器:[ngModel.NgModelController](https://docs.angularjs.org/api/ng/type/ngModel.NgModelController) – robe007