我有一个微小另一个问题。 这一次,这是因为通过该指令的控制器$范围的服务。 请参见下面的代码:
angular.module('person.directives').
directive("person", ['$dialog', function($dialog) {
return {
restrict: "E",
templateUrl: "person/views/person.html",
replace: true,
scope: {
myPerson: '='
},
controller: function ($scope)
{
$scope.test = 3;
}
}
}]);
如果我注释掉控制器部分,然后正常工作。
正如你所看到的,我已经用了指令数组声明,所以$对话服务,即使微小后已知角。 但是,我怎么办呢控制器上的$范围的服务?
您需要如下声明控制器:
controller: ['$scope', function ($scope)
{
$scope.test = 3;
}]
完整的示例在这里:
angular.module('person.directives').
directive("person", ['$dialog', function($dialog) {
return {
restrict: "E",
templateUrl: "person/views/person.html",
replace: true,
scope: {
myPerson: '='
},
controller: ['$scope', function ($scope)
{
$scope.test = 3;
}]
}
}]);
通过@Sam提供的解决方案将致力于但这意味着指令的控制器暴露在整个应用程序,它是不必要的。
好吧,我结束了创建一个单独的文件控制器:
angular.module('person.controllers').controller('personCtrl', ['$scope', function ($scope) {
$scope.test = 3;
}]);
然后在指令中,我给你的名字控制器:
controller: 'personCtrl'
不知道这是最好的方式。 它看上去干净,但。 你怎么看 ?