我构建了一个自定义指令,它向用户提供了类似于下拉列表的一些选项(假设“真正的”<select>
元素不适合此特定情况)。
该指令被输入数据并显示它 它还为每个项目附加一个点击监听器 项目由唯一编号标识。
指令如何在其范围之外传达所点击的项目的编号是什么?
感谢。
答案 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();