将数据传递出指令

时间:2013-12-27 15:35:09

标签: angularjs

我构建了一个自定义指令,它向用户提供了类似于下拉列表的一些选项(假设“真正的”<select>元素不适合此特定情况)。

该指令被输入数据并显示它 它还为每个项目附加一个点击监听器 项目由唯一编号标识。

指令如何在其范围之外传达所点击的项目的编号是什么?

感谢。

2 个答案:

答案 0 :(得分:8)

您应该使用双向数据绑定将指令中的值传递给它的父级。在这里摆弄http://jsfiddle.net/D85A2/1

<div my-directive id="selectedId">
<p>The selected item is {{selectedId}}</p>

myApp.directive('myDirective', function () {
    return {
        scope: {
            id: '=',
        },
        link: function (scope, element, attr) {
            scope.setItem = function (id) {
                scope.id = id;
            };
        }
    };
});

答案 1 :(得分:2)

所有这些都取决于你想要对这个点击的数字做什么,但一般来说,这是Angular的服务派上用场的地方。创建一个服务,将所述服务注入您的指令,在该服务中设置点击的数字,在您需要的地方注入并使用它。

样品服务:

myApp.factory("myFactory", function() {
    this.clicked = 0;
    return {
        get: function() {
            return this.clicked;
        },
        set: function(num) {
            this.clicked = num;
        }
    }
});

现在您可以运行myFactory.set(num) - 并使用myFactory.get();

进行检索