通过Jquery调用Angular的ng-show,但它不起作用

Call Angular's ng-show by Jquery but It is not working

本文关键字:不起作用 ng-show Jquery 调用 Angular 通过      更新时间:2023-09-26

我尝试使用 Jquery 从 signalR 方法设置 angularJs 范围项,但范围项没有改变。这是我的代码:

@Scripts.Render("~/Scripts/jquery-1.10.2.js")
@Scripts.Render("~/Scripts/jquery.signalR-2.2.0.js")
@Scripts.Render("~/Scripts/angular.js")
<script type="text/javascript">
$(function () {
//Triggered from SignalR
        survey.client.refreshSurvey = function (connectionid) {
                var scope = angular.element($("#SurveyCtrl")).scope();
                scope.showGif = false;
                scope.$apply();
        };
    });
</script>

目录 :

<div ng-app="SurveyApp" id="SurveyCtrl" ng-controller="SurveyCtrl">
  <div ng-show="showGif">
    <img src="image.gif">
  </div>
  <div ng-show="!showGif">
    <img src="backGround.png">
  </div>

我找不到哪里出了问题?

演示

Hi,

在这里我添加了示例,但在按钮单击时调用该函数,它工作正常......你需要这个函数来接受在AngularJS中设置的jQuery值。

   (function($, ng) {
        var $val = $.fn.val; // save original jQuery function
       // override jQuery function
      $.fn.val = function (value) {
        // if getter, just return original
        if (!arguments.length) {
          return $val.call(this);
        }
         // get result of original function
        var result = $val.call(this, value);
         // trigger angular input (this[0] is the DOM object)
        ng.element(this[0]).triggerHandler('input');
         // return the original result
        return result; 
      }
    })(window.jQuery, window.angular);