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;
问题是由插件初始化的顺序引起的。
- jQuery的
- 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 ); }