喜欢和不喜欢用户对产品的评论

2024-05-30

用户架构:

var UserSchema = new Schema({
    review_likes :      [{type:String}],
    review_dislikes :   [{type:String}]
});

审查架构:

var ReviewSchema = new Schema({
    productID:{type: String, required: true},
    numoflikes:{type:Number, required:true},
    numofdislikes:{type:Number, required:true}
})

审查控制器:

       .controller('reviewsController', function($route, reviewsFactory, $scope, $routeParams){
        var that=this;
        reviewid = $routeParams.id;
        productID = $routeParams.id;
        likestats = false;
        dislikestats = false;


    /*    console.log('controller',questionid)
    */    var getallReviews = function(){
        reviewsFactory.getReviews(function(data){
            that.reviews = data;
        })
    }
    getallReviews();


    var getProReviews = function(productID){
        reviewsFactory.getProductReviews(productID, function(data){
            that.proreviews = data;
        })
    }
    getProReviews(productID);
    $scope.pID=productID;

    this.addReview = function(){
        reviewsFactory.addReview(this.newReview, function(message){
            getallReviews();
            console.log(message)
            that.messages = message
        })
        this.newReview = {};
    }

    var getthatReview = function(){
        reviewsFactory.getthatReview(reviewid, function(data){
    /*            console.log('[CONTROLLER] That Question:',data);
    */            that.review = data;
            })
    }
    getthatReview();



    this.getThatReview = function(){
        reviewsFactory.getthatReview(reviewid, function(data){
            /*            console.log('[CONTROLLER] That Question:',data);*/
            reviewsFactory.checkRevLike(reviewid, function(response){

                if(response == "liked"){
                    data.likestats = true;  
                }
                else{
                    data.likestats = false;  
                }
                angular.forEach(that.proreviews,function(e){  if(e._id == reviewid)e.likestats = data.likestats; });

                angular.forEach(that.reviews,function(e){  if(e._id == reviewid)e.likestats = data.likestats; });


            })
            that.review = data;
        })
    }
    this.addlikereview = function(rId){
        reviewid = rId;

        reviewsFactory.addRevLike(rId, function(response){
            that.getThatReview();
        })
        }

    this.removelikereview = function(rId){
        reviewid = rId;

        reviewsFactory.removeRevLike(rId, function(response){
            that.getThatReview();
        })
    }

    this.checklikereview = function(review){
        reviewid = review._id;
        reviewsFactory.checkRevLike(review._id, function(response){
            if(response == "liked"){
                review.likestats = true; 
            }
            else{
                review.likestats = false; 
            }
        })
    }


    this.getThatReview2 = function(){
        reviewsFactory.getthatReview(reviewid, function(data){
            /*            console.log('[CONTROLLER] That Question:',data);*/
            reviewsFactory.checkRevDisLike(reviewid, function(response){

                if(response == "disliked"){
                    data.dislikestats = true;  
                }
                else{
                    data.dislikestats = false;  
                }
                angular.forEach(that.proreviews,function(e){  if(e._id == reviewid)e.dislikestats = data.dislikestats; });

                angular.forEach(that.reviews,function(e){  if(e._id == reviewid)e.dislikestats = data.dislikestats; });


            })
            that.review = data;
        })
    }
    this.adddislikereview = function(rId){
        reviewid = rId;

        reviewsFactory.addRevDisLike(rId, function(response){
            that.getThatReview2();
        })
    }
    this.removedislikereview = function(rId){
        reviewid = rId;

        reviewsFactory.removeRevDisLike(rId, function(response){
            that.getThatReview2();
        })
    }

    this.checkdislikereview = function(review){
        reviewid = review._id;
        reviewsFactory.checkRevDisLike(review._id, function(response){
            if(response == "disliked"){
                review.dislikestats = true; 
            }
            else{
                review.dislikestats = false; 
            }
        })
    }


})

html:

 <div ng-controller="reviewsController as revCtrl ">
     <div ng-repeat="review in revCtrl.proreviews>
         <div ng-init="revCtrl.checklikereview(review)"> LIKE
             <div ng-if="review.likestats" ng-href="#" ng-click="revCtrl.removelikereview(review._id)"  class="glyphicon glyphicon-star ">
             </div>
             <div ng-if="!review.likestats" ng-href="#" ng-click="revCtrl.addlikereview(review._id)"  class="glyphicon glyphicon-star-empty ">
             </div> 
             <span ng-bind="review.numoflikes"></span> 
        </div>
        <div ng-init="revCtrl.checkdislikereview(review)"> DISLIKE 
            <div ng-if="review.dislikestats" ng-href="#" ng-click="revCtrl.removedislikereview(review._id)" class="glyphicon glyphicon-star ">
            </div>
            <div ng-if="!review.dislikestats" ng-href="#" ng-click="revCtrl.adddislikereview(review._id)" class="glyphicon glyphicon-star-empty ">
            </div> 
            <span ng-bind="review.numofdislikes"></span> 
         </div>
    </div>
</div>  

我正在尝试喜欢/不喜欢问题评论列表中的评论

我想将 1 个喜欢/不喜欢限制为 1 个用户的评论

这里发生的问题是,在html中的显示中,字形立即成功更改,但带有 ng-bind="review.numoflikes" 和 ng-bind="review.numofdislikes" 的跨度不会立即更新,而是在页面上更新刷新

数据库正在成功更新

另外,如果你能帮助我限制用户只喜欢或不喜欢,那就太好了。谢谢。


找到了解决方案..只需尝试一次

this.getThatReview = function(){
        reviewsFactory.getthatReview(reviewid, function(data){
            /*            console.log('[CONTROLLER] That Question:',data);*/
            reviewsFactory.checkRevLike(reviewid, function(response){

                if(response == "liked"){
                    data.likestats = true;  
                }
                else{
                    data.likestats = false;  
                }
                angular.forEach(that.proreviews,function(e){  if(e._id == reviewid)e.likestats = data.likestats; });

                angular.forEach(that.reviews,function(e){  if(e._id == reviewid)e.likestats = data.likestats; });

                angular.forEach(that.proreviews,function(e){  if(e._id == reviewid)e.numoflikes = data.numoflikes; });

                angular.forEach(that.reviews,function(e){  if(e._id == reviewid)e.numoflikes = data.numoflikes; });


            })
            that.review = data;
        })
    }


this.getThatReview2 = function(){
        reviewsFactory.getthatReview(reviewid, function(data){
            /*            console.log('[CONTROLLER] That Question:',data);*/
            reviewsFactory.checkRevDisLike(reviewid, function(response){

                if(response == "disliked"){
                    data.dislikestats = true;  
                }
                else{
                    data.dislikestats = false;  
                }
                angular.forEach(that.proreviews,function(e){  if(e._id == reviewid)e.dislikestats = data.dislikestats; });

                angular.forEach(that.reviews,function(e){  if(e._id == reviewid)e.dislikestats = data.dislikestats; });

                angular.forEach(that.proreviews,function(e){  if(e._id == reviewid)e.numofdislikes = data.numofdislikes; });

                angular.forEach(that.reviews,function(e){  if(e._id == reviewid)e.numofdislikes = data.numofdislikes; });


            })
            that.review = data;
        })
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

喜欢和不喜欢用户对产品的评论 的相关文章

随机推荐

  • 通过 TFS 构建服务执行时 MSBuild 找不到引用

    我有一个参考 Telerik 程序集的解决方案 引用的版本已安装在构建服务器上 问题是 持续集成构建总是成功的 直到我升级解决方案和构建服务器上的 Telerik 程序集 现在构建无法提供经典的 无法解析此引用 我检查了我的解决方案 一切都
  • 要求 Emacs 更清楚地突出显示哪个窗口(窗格)具有焦点(光标)

    假设我将 Emacs 窗口分成多个图块 例如 When I switch between tiles aka windows in Emacs to edit my files e g using C x o I can see on wh
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • UnicodeDecodeError:“charmap”编解码器无法解码位置 55 中的字节 0x81:字符映射到 <未定义>

    我是 Python 新手 希望有人能向我解释错误消息的含义 具体来说 我在Atom中保存了一些Python和SPSS结合在一起的代码 这是我以前的同事创建的 现在 由于前同事已经不在了 我现在需要运行代码 我所做的是从 SPSS22 运行下
  • 我可以将 JSON 字符串转换为 JsonResult 吗?

    我在数据库中存储了一些存储的 JSON 字符串 我想将其作为 JsonResult 返回给客户端 我知道 Json object 将对象转换为 JsonResult 但如果我已经将结果存储在字符串中怎么办 我可以将其转换为 JsonResu
  • INFORMATION_SCHEMA 与 sysobjects

    在 SQL Server 中 INFORMATION SCHEMA 和 sysobjects 之间有什么区别 其中一个是否比另一个提供更多信息 或者它们通常用于不同的用途 sysobjects 与 sys objects 相同吗 如果不是
  • 错误:无法在 scala 中找到或加载主类

    安装 eclipse scala 插件和 eclipse maven scala 插件后 我是 scala 新手 所以我尝试确保在测试 scala hello world 项目后环境正常工作 它按预期工作 但我在尝试执行我从公司存储库中签出
  • 如何使用 DrRacket 遵循 SimplyScheme 书籍

    我希望能够操纵句子 以便我可以将它们作为输入并根据单个字母等内容返回输出 例如 ends e 命令将返回所有以 e 结尾的单词 ends e only the good die young gt the die 不幸的是 e 是一个字符串
  • Brush 属性的 WPF ColorAnimation

    我想知道是否有人可以帮助我 我有一个标签 当在后面的代码中调用方法时 我需要能够在任意两种颜色之间交叉淡入淡出 迄今为止我最好的尝试 Private OldColor as Color Colors White Sub SetPulseCo
  • Angular2 HTTP - 如何了解后端服务器已关闭

    我正在开发一个前端 它使用服务器提供的 JSON 服务 我很高兴使用 Angular2 的 HTTP 我可以通过以下方式捕获错误 catch 操作员 如果我发现与特定服务相关的问题 例如该服务不是由服务器定义的 catch 操作员收到一个R
  • 部署应用程序时“matplotlib”没有属性“cm”

    我正在尝试部署一个使用 Dash 开发的应用程序 该应用程序使用一些 matplotlib 函数 当我在本地运行应用程序时 它运行顺利并且一切正常 但是 当我使用相同的代码部署它时 我使用heroku进行部署 安装的 matplotlib
  • 在 Safari 中提交表单后无法对 DOM 进行样式更改

    在 Safari 中提交表单后 我在对 DOM 进行样式更改时遇到问题 有谁知道它是否可能 这是 Safari 预期的浏览器行为吗 我设置了一个非常简单的示例 以便您可以看到实际问题 http jamesmichaelking com st
  • Jquery文件上传插件进度条

    这个插件 https github com blueimp jQuery File Upload wiki管理网页中的文件上传 并且可以在上传过程中添加很多 UI 元素 您创建一个输入文件类型元素 然后绑定 js 文件 使用实例化代码和 w
  • Flask 不加载配置

    我在 Flask 中加载配置时遇到问题 from config import config DevelopmentConfig TestingConfig ProductionConfig def create app config nam
  • 如何使用itext7缩放固定矩形内的文本?

    我正在尝试使用 c 中的 itext7 制作一个 pdf 文档 该文档应该具有包含不同文本的固定矩形 这些文本应该在 不可见 矩形的边界内缩放 我试图寻找是否有自动缩放功能 但到目前为止只发现表单域的自动缩放功能 由于 pdf 将用于绘制文
  • PHP UTF-8 问题 - 如果我在 PHP 中创建一个字符串...它是 UTF-8 格式吗?

    在 PHP 中 如果我创建一个像这样的字符串 str bla bla here is my string 然后我可以使用 mbstring 函数将该字符串作为 UTF8 进行操作吗 Will this work str mb strlen
  • C# 中什么时候必须使用 extern 别名关键字?

    我们什么时候必须使用extern aliasC 中的关键字 基本上 只有当您想要使用来自不同程序集的具有相同完全限定名称 相同命名空间 相同类型名称 的两种类型时 您才真正需要它 您为每个程序集声明不同的别名 以便您可以通过该别名引用它们
  • 使用列的长度过滤 DataFrame

    我想过滤一个DataFrame使用与列长度相关的条件 这个问题可能很简单 但我在SO中没有找到任何相关问题 更具体地说 我有一个DataFrame只有一个Column哪一个ArrayType StringType 我想过滤DataFrame
  • 如何在useEffect中调用useNavigate? - 用于 Ant Design - Mobile 中的底部导航

    我是反应新手 我正在使用 AntD mobile 制作一个应用程序 对于底部导航 我正在利用AntD mobile 中的 tabBar 组件 https mobile ant design components tab bar 我不知道如何
  • 喜欢和不喜欢用户对产品的评论

    用户架构 var UserSchema new Schema review likes type String review dislikes type String 审查架构 var ReviewSchema new Schema pro