Javascript 调用角度';正在通过Jquery显示,但它不工作
我试图用Jquery从signalR方法设置angularJs范围项,但范围项没有改变。这是我的密码:Javascript 调用角度';正在通过Jquery显示,但它不工作,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我试图用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 () { //Tr
@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>
@Scripts.Render(“~/Scripts/jquery-1.10.2.js”)
@Scripts.Render(“~/Scripts/jquery.signalR-2.2.0.js”)
@Scripts.Render(“~/Scripts/angular.js”)
$(函数(){
//由信号机触发
survey.client.refreshSurvey=函数(connectionid){
var scope=angular.element($(“#SurveyCtrl”)).scope();
scope.showGif=false;
作用域:$apply();
};
});
Html:
<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>
我找不到哪里错了?
在这里,我添加了示例,但在单击按钮时调用函数,它工作正常。。。您需要此函数来接受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);
为什么不把代码放在angularjs控制器中?你可以检查这个项目是否依赖于angularjs控制器内部?这是唯一的解决办法吗?这里还有别的解决办法吗?没有。可能没有从您的控制器中找到。所以,与其在控制器外部搜索范围,不如在控制器内部搜索。谢谢你的回答。我找到了解决办法。我知道这不是最好的内联js,但我试着集中精力调用angular的func。下面是我的解决方案:var scope=angular.element($(“#SurveyCtrl”)).scope();scope.showGif=false;angular.element($(“#SurveyCtrl”)).scope().$apply();在angularjs中,是否有相同的过程
(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);