从AngularJS指令中触发点击事件。

7 浏览
0 Comments

从AngularJS指令中触发点击事件。

我如何通过angularjs指令来触发li元素的点击事件并指定它们的索引?

我尝试使用$first来触发第一个元素的点击,但它没有起作用。

谢谢任何帮助。

0
0 Comments

问题的原因是在给指令添加点击事件时,使用了错误的方法。解决方法是使用ng-click指令或在jQuery的bind函数中添加$apply方法。

在上述示例中,restrict="CA"表示该指令可以作为类(class)或属性(attribute)使用。

具体代码如下所示:

html:

js directive:

app.directive('thumbnail', [function() {
  return {
    restrict: 'CA',
    replace: false,
    transclude: false,
    scope: {
      index: '=index',
      item: '=itemdata'
    },
    template: '{{item.alt}}',
    link: function(scope, elem, attrs) {
      if (parseInt(scope.index) == 0) {
        angular.element(attrs.options).css({'background-image':'url('+ scope.item.src +')'});
      }
      elem.bind('click', function() {
        var src = elem.find('img').attr('src');
        // call your SmoothZoom here
        angular.element(attrs.options).css({'background-image':'url('+ scope.item.src +')'});
      });
    }
  }
}]);

在上述代码中,我们可以看到在点击事件的回调函数中,使用了$apply方法来更新作用域。

另外,在最后的评论中,有人指出了指令中replace和transclude属性的设置似乎是多余的,可以考虑去除。

以上就是关于如何从AngularJS指令中触发点击事件的问题的原因和解决方法的整理。

0
0 Comments

问题的出现原因:在AngularJS指令中触发点击事件。

解决方法:使用AngularJS指令的扩展方法来解决该问题。如果页面上有多个图库,这可能是一种简单的方法来解决问题。

文章内容如下:

这是对Langdon的回答的一个扩展,使用指令的方式来解决该问题。如果页面上有多个图库,这可能是一种简单的方法来解决问题。

使用方法如下:

<gallery images="items"></gallery>
<gallery images="cats"></gallery>

点击这里查看运行效果。

通过上述代码可以看出,通过使用gallery指令,我们可以在页面上创建多个图库。这个指令可以接收一个名为images的参数,该参数指定了图库中要显示的图片。

为了实现这个功能,我们可以在指令的链接函数中添加一个点击事件监听器。当用户点击图库中的某个图片时,该事件将被触发。

下面是具体的实现代码:

angular.module('myApp', [])
.directive('gallery', function() {
  return {
    restrict: 'E',
    scope: {
      images: '='
    },
    template: '
{{image.name}}
', link: function(scope, element, attrs) { scope.showImage = function(image) { console.log('You clicked on ' + image.name); }; } }; });

通过上述代码,我们定义了一个名为gallery的指令。这个指令接收一个名为images的参数,并在模板中使用ng-repeat指令来遍历这些图片,并为每个图片添加了一个点击事件监听器。

当用户点击某个图片时,showImage函数将被调用,并打印出被点击的图片的名称。

通过这种方式,我们可以在AngularJS指令中实现点击事件的触发。这样,我们就可以轻松地在页面中使用多个图库,并监听每个图库中图片的点击事件了。

0
0 Comments

问题的出现的原因是:使用一个directive来绑定click事件并改变src属性是过度设计,因为大部分工作可以通过模板来处理。

解决方法是:

1. 添加$scope.selectedItem来解决第一个问题(默认图片);

2. 添加$scope.setSelectedItem并在ng-click中调用它。最终的需求可能不同,但是使用一个directive来绑定click事件并改变src属性是过度设计的,因为大部分工作可以通过模板来处理;

3. 注意使用ngSrc来避免在初始加载时发出错误的服务器请求;

4. 如果你真的需要使用background-image,那么你需要一个像ngSrc这样的directive,它可以推迟设置background-image样式,直到真正的数据加载完成。

具体代码见链接:http://plnkr.co/edit/xYNX47EsYvl4aRuGZmvo?p=preview

0