AngularJs:"standalone"指令和外部数据依赖关系



首先,我是angular的新手,所以如果问题很琐碎,请原谅我,但我尝试了谷歌和angular文档,但找不到任何明确的例子来满足我的需求。

我正在尝试构建一个"独立"指令模块(复杂的UI控件),我希望它使用来自可配置服务/工厂/提供商的数据。

我有一个演示应用程序和我的真实应用程序,每个应用程序都应该有自己的数据提供程序(即硬编码和RESTneneneba API,我猜是相同的单元测试常见场景)。

考虑到使用该指令模块的应用程序可能在同一html上有多个instace,这将是为每个指令设置不同数据提供程序对象的正确方法,如下例所示:

<!DOCTYPE html>
<html lang="en">
<body ng-app="demo" >
<my-directive id="first"></my-directive>
<my-directive id="second"></my-directive>
</body>
</html>

更具体地说,考虑一个网格指令,它将有一个控制器来保持一些日常的重新调用,处理事件或事情,如排序、分页等。但作为一个UI控件,它没有数据检索逻辑,它只需要一些尊重接口的对象,如"getRows"、"getPage">

我的问题是如何在指令的通用控制器中注入/配置dataProvider对象。

如果我正确理解你,这就是你应该做的。

创建指令。此时,您可以通过scope属性传入数据。=符号将提供到当前控制器中作用域变量的双向绑定。

angular.module('UI-Control', [])
.directive('myDirective', function() {
return {
restrict: 'A',
scope: {
data: '=myDirective'
},
link: function(scope, elem, attr) {
console.log(data);
}
}
});

然后创建控制器并创建一个范围变量,将其传递到指令中。请确保注入您的独立指令模块。

angular.module('testCtrl', ['UI-Control'])
.controller('testCtrl', function($scope) { 
$scope.data1 = {
something: "Something 1",
somethingElse: "Something Else 1"
}
$scope.data2 = {
something: "Something 2",
somethingElse: "Something Else 2"
}
});

现在,在HTML中,您可以用这样传入的数据实例化指令。

<body ng-app="demo" ng-controller="testCtrl">
<my-directive="data1" id="first"></my-directive>
<my-directive="data2" id="second"></my-directive>
</body>

最新更新