Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果一个条件设置为true,而遗漏的ng显示为false,如何处理angularjs中的多个ng显示和一个ng隐藏_Javascript_Angularjs - Fatal编程技术网

Javascript 如果一个条件设置为true,而遗漏的ng显示为false,如何处理angularjs中的多个ng显示和一个ng隐藏

Javascript 如果一个条件设置为true,而遗漏的ng显示为false,如何处理angularjs中的多个ng显示和一个ng隐藏,javascript,angularjs,Javascript,Angularjs,当用户悬停在星星上时,我想显示消息yourated{{rate1}}star。修改?,如果用户点击了评分,我想显示“感谢评分”(我的逻辑见下面的html)。但在此之后,如果用户再次将鼠标悬停在星星上,我想显示yourated{{rate1}}star。再次修改? 问题一旦评级,它总是显示“感谢评级”。如何解决这个问题 请看我在下面做这件事的尝试,如果有人能指出我犯的错误,那将是很有帮助的。谢谢 <div class="user"> <uib-rating ng-model

当用户悬停在星星上时,我想显示消息
yourated{{rate1}}star。修改?
,如果用户点击了评分,我想显示“感谢评分”(我的逻辑见下面的html)。但在此之后,如果用户再次将鼠标悬停在星星上,我想显示
yourated{{rate1}}star。再次修改?

问题一旦评级,它总是显示“感谢评级”。如何解决这个问题

请看我在下面做这件事的尝试,如果有人能指出我犯的错误,那将是很有帮助的。谢谢

<div class="user">

  <uib-rating ng-model="rate" max="5" read-only="isReadonly" on-titles="['one','two','three']" aria-labelledby="default-rating" class="readOnlyRating "></uib-rating>


  <div  class=" arrow_box rt" ng-show="showRatings">
    <div class="ratingName">
      <h5><b>Give your rating here..</b></h5>
    </div>
    <div class="stars">
      <uib-rating ng-model="rate1" ng-click="rating(rate1)" max="5" read-only="isReadonly1" on-hover="hoveringOver(value)" on-leave="overStar = null" titles="['one','two','three']" aria-labelledby="default-rating" class="readOnlyRating "></uib-rating>
    </div>
  </div>
  <div ng-mouseleave="hoverOut()" class="arrow_box rt" ng-show="ratevalue ">
    <h5 class="ratedPopover"> Thanks for rating </h5>
  </div>

  <div class="arrow_box rt" ng-hide="showRatings">
    <h5 class="ratedPopover">You rated <b>{{rate1}} star.</b><a ng-click="showMe()" class="modifyIt"><b  > modify?</b></a>
  </h5>
  </div>

</div>

我建议不要使用ratevalue来显示消息“感谢您的评分”,而是使用类似于
hasjustRated
的标志。在代码中,将其初始化为false

在函数定义的开头:
scope.rating=函数(rate){…}

另外,在成功回调的末尾,添加以下行:

scope.hasjustRated=true

然后在悬停左侧,将该值重置为false。我建议为休假添加一个clear函数,在离开hover时执行所有必要的步骤


showMe函数的作用也有点不清楚

问题还不清楚,什么东西在这里不起作用?我还可以看到,本地存储值似乎没有在任何地方得到更新。对此我深表歉意。我现在刚刚编辑了我的代码,并对我的问题做了简要的描述,您现在可以查看我的代码了。对不起,文字仍然不清楚。但是您确实需要在成功回调中更新localstorage。我不知道这是否是您的问题。我还建议您创建一个JSFIDLE或PLUNK,并提供一个您的问题的工作示例。如果这解决了您的问题,您可以接受我的答案。
scope.rating = function (rate) {

    scope.ratevalue = rate;
    if ($localStorage[localStorageRatingKey] == undefined) {
        previousRatingValue = 0;
        $localStorage[localStorageRatingKey] = scope.ratevalue;
    } else {
        previousRatingValue = $localStorage[localStorageRatingKey];
        $localStorage[localStorageRatingKey] = scope.ratevalue;
    }

    ratingService.update({
        companyId : scope.details._id,
        userRating : scope.ratevalue,
        previousRatingValue : previousRatingValue
    }, scope.details, successCallback, errorCallback);

    function successCallback(res) {
        // console.log("coming from callback");
        scope.rate = res.avgRatings;
        scope.reviewsCount = res.totalRatingsCount;
    }

    function errorCallback(res) {
        NotificationFactory.error('Failed to update the product rating...', res.data.message);
    }

};

scope.showMe = function () {
    scope.showRatings = !scope.showRatings;
    console.log("showme :" + scope.showRatings);
}

scope.hoverOut = function () {
    if ($localStorage[localStorageRatingKey]) {
        scope.showRatings = !scope.showRatings;
    } else {
        scope.showRatings = true;
    }
    console.log("hoverOut ShowRatings:" + scope.showRatings);
}

if ($localStorage[localStorageRatingKey]) {
    scope.showRatings = false;
} else {
    scope.showRatings = true;
}