首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS -在嵌套ng中不工作的链接和方法-重复

问AngularJS -在嵌套ng中不工作的链接和方法-重复
EN

Stack Overflow用户
提问于 2014-04-29 10:17:08
回答 2查看 889关注 0票数 0

我有一个弹出显示项目与ng-重复,但在ng-重复的链接不起作用,两种方法。以下是html代码

代码语言:javascript
复制
<div class="skills-container">
  <i class="fa fa-tags"></i>
    <button type="button" class="btn btn-sm btn-primary skills" ng-repeat="skill in work.skills" ng-Mouseover="getSimilar($index)"><{- skill -}>
      <div class="bubble">
        <i ng-show="work.similar === null" class="fa fa-spinner"></i>
        <a ng-repeat="s in work.similar" ng-href="#work/<{-s.id-}>">
          <img ng-src="img/portfolio/<{-s.img-}>" title="<{-s.title-}>" />
        </a>
        <span ng-show="work.similar === false">No similar works found</span>
      </div>
    </button>
<div>

和方法

代码语言:javascript
复制
$scope.getSimilar = function(index) {
    $scope.work.similar = null;
    WorkLoader.getSimilar($scope.work.skills[index], $route.current.params.workId).then(function(promise) {
        if(promise.msg) {
            alert(promise.msg);
            return;
        }

        $scope.work.similar = promise.data.length ? promise.data : false;
    });
};

点击图像,什么都不会发生。我还尝试用一个简单的console.log(“click”)附加ng-click="foo()“,但什么也没有。

如果我在ng-重复之外添加一个链接,如

代码语言:javascript
复制
<a href="http://google.com">Google</a>

它起作用了。

但是如果我用http://google.com替换所有的href,它就不起作用了。

谢谢

例琴

http://jsfiddle.net/9Aw3q/

请看代码,小提琴中的GoogleOK链接只是一个有用的例子。不工作的链接是ng-重复内部的链接。

代码语言:javascript
复制
<div class="bubble">
  <i ng-show="work.similar === null" class="fa fa-spinner"></i>
<!-- links not working -->      
      <a ng-repeat="s in work.similar" ng-href="#work/<{-s.id-}>">
    <img ng-src="img/portfolio/<{-s.img-}>" title="<{-s.title-}>" />
  </a>
      <!-- link working -->
      <a href="http://google.com">Google</a>
  <span ng-show="work.similar === false">No similar works found</span>
</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-29 11:02:34

这是因为每次移动鼠标时,mouseover都会启动循环。只是不可能点击一下。

当鼠标位于元素上时,您需要保留一个标志(布尔值),并在鼠标移出元素时重新设置此标志。

就像这样:

JS

代码语言:javascript
复制
$scope.initOver = false;

$scope.resetOver = function() {
    $scope.initOver = false;
}

$scope.getSimilar = function (index) {
    if($scope.initOver == false) {
        $scope.work.similar = [{
            id: '1',
            title: 'First'
        }, {
            id: '2',
            title: 'Second'
        }, {
            id: '3',
            title: 'Third'
        }];
        $scope.initOver = true;
    }
};

代码语言:javascript
复制
<button type="button" class="btn btn-sm btn-primary skills" ng-repeat="skill in work.skills" ng-Mouseover="getSimilar($index)" ng-Mouseleave="resetOver()">

Fiddle

票数 0
EN

Stack Overflow用户

发布于 2014-04-29 11:23:25

我认为这是因为你的链接在你的按钮内。链接和按钮都是可点击的。因此,当你点击任何链接,它会理解你点击了一个按钮。尝试将您的弹出代码放在按钮外并检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23361806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档