如何在角度1x中的不同指令之间传递数据

时间:2017-07-26 20:54:03

标签: javascript angularjs angular-directive

指令1

(function () {
"use strict";

angular
    .module("app")
    .directive("directive1", directive1);

directive1.$inject = ["$compile"];

function directive1($compile) {
    return {
        restrict: "E",
        templateUrl: "app/views/directive1template.html",
        scope: {
            ui: '=info',
        },
        compile: function (tElem, tAttrs) {
            return {
                pre: function (scope, iElem, iAttrs) {
                },
                post: function (scope, iElem, iAttrs) {
                    console.log(scope);
                }
            }
        }

    };}}());

指令2

(function () {
"use strict";

angular
    .module("app")
    .directive("directive2", directive2);

directive2.$inject = ["$compile"];

function directive1($compile) {
    return {
        restrict: "E",
        templateUrl: "app/views/directive2template.html",
        scope: {
            customer: '=info',
        },
        compile: function (tElem, tAttrs) {
            return {
                pre: function (scope, iElem, iAttrs) {
                },
                post: function (scope, iElem, iAttrs) {
                    console.log(scope);
                }
            }
        }

    };}}());

模板

<div class="row">
    <div id="d3FormRows" class="well">
        <!--custom directive placeholder-->
        <directive2 info="data" index="$index"></directive2>
        <!--custom directive placeholder-->

    </div>
</div>

如果有什么我可以在directive2内访问scope directive1个适当位置/值,我在这里寻找什么?

感谢。

1 个答案:

答案 0 :(得分:0)

通常,您可以使用服务进行数据交换,然后在两个指令中注入该服务。

https://docs.angularjs.org/guide/services

例如:

angular
.module("app")
.service("MyDataService", function(){
    return {
        var1:'value1'
    }
});

然后注入这个&#39; MyDataService&#39;在两个指令中提供服务,这样你就可以在一个地方改变数据,并且&#34;见&#34;其他指令的变化。

基本上&#39; .service&#39;与&#39; .factory&#39;相同,主要区别在于一个返回相同的实例(如Singleton),其他返回每个指令的新实例。