angular js:从jQuery访问$ scope

stackoverflow中有几个这样的问题。 我知道。 尝试了所有的答案,但仍然没有运气。 我的HTML:

{{gameContent.headline}}

jQuery的:

  var country = $("#headline-game").scope().headline; alert(country); 

但我没有定义,而是我的范围。 谁能帮我? 我不想改变范围,只是访问它。

Angular会向窗口添加一个全局angular变量。

所以你可以这样做:

 angular.element("#headline-game").scope().gameContent.headline; 

问题是由插件初始化的顺序引起的。

  1. jQuery的
  2. AngularJS

因此,在文档加载的jQuery脚本中访问scope()将导致未定义,因为jQuery Angular 之前运行。

解决方法是让AngularJS在准备就绪后使用指令执行jQuery。

示例:

调节器

 app.directive("myDirective", function() { return { restrict: "A", scope: { customheadline: "@" }, link: function(scope, elem, attrs) { var country = scope.customheadline; alert(country); } } }); 

HTML

 
{{gameContent.headline}}

试试这个

 var country = $("#headline-game").scope().gameContent.headline; alert(country); 

假设模型值是从$ http请求返回的。

在控制器中,您有3个function:

 function getGameContentSuccessCallback(){ doSuccessCallback(); } function getGameContentErrorCallback(){ doSth() } function getGameContent(){ GameContentService.GetGameContent(submitData,getGameContentSuccessCallback,getGameContentErrorCallback) } 

然后在jQuery中定义doSuccessCallback

 var doSuccessCallback = function(){ var country = angular.element("#headline-game").scope().gameContent.headline; alert(country ); }