gpt4 book ai didi

javascript - 检查 Controller 上是否有任何指令

转载 作者:行者123 更新时间:2023-12-03 12:28:01 24 4
gpt4 key购买 nike

我想构建一个服务,可以检查 Controller 上是否使用了任何指令,如果有,则构建一个指令对象并用 Controller 上每个指令的对象填充它。这样做的好处是我可以为我的所有指令自动构建一种用于范围继承的 API。现在我基本上在做同样的事情,但是是手工的。范围对象上是否有一些属性可以用来查找正在使用的指令的名称?这是我的意思的一个例子

app.controller('controller1' ['$scope', function($scope) {
$scope.directivesAPI = {};
$scope.directivesAPI.privateScope = {};
}]);


app.directive('privateScope', function() {
restrict: A,
scope: true,
link: function(scope, elem, attr) {
scope.directivesAPI.privateScope.what = "My Job is to provide new features";
scope.directivesAPI.privateScope.how = "I share the scope using this fancy API";

}
})


<div ng-controller="controller1" privateScope>
{{directivesAPI.what}}
{{directivesAPI.how}}
</div>

通过这种方式,我可以共享作用域,而不会污染父作用域。所以我的问题是,我希望能够做更多类似这样的事情,而不是必须手动构建指令API

app.controller('controller1' ['$scope', 'directivesAPI' function($scope,directivesAPI) {
$scope.directivesAPI = directivesAPI.build();

//The service is responsible for finding the directives and building the object for me.
}]);

如果有人有任何想法,我很乐意听听。

最佳答案

那么,据我了解,您想要的是能够拥有一个可以在所有指令之间使用的通用“范围”?

如果是这种情况,那么您可以做的就是创建一个服务。您可以在所有指令中使用该服务,并将其视为私有(private)“范围”。就像我下面的内容:

var myApp = angular.module('myApp', []);

myApp.controller('GreetingController', ['$scope', 'myPrivateScope',
function($scope, myPrivateScope) {
$scope.greeting = myPrivateScope.greeting;
}
]);

myApp.service('myPrivateScope', function () {
var srv = {};

srv.greeting = 'Hola!';

return srv;
});

您可以使用 $injector 在指令中获取服务。查看AngularJS. Passing Service as an argument to Directive的答案.

关于javascript - 检查 Controller 上是否有任何指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com