我在JQuery UI
view
/ AngularJS
个应用中使用JQuery
个组件。
我的JavaScript
代码中需要这样的东西(不起作用):
$(document).ready(function () {
var elem = $('div[ng-view]')[0];
var $scope = angular.element(elem).scope();
$scope.$on('$viewContentLoaded', function() {
// multiple JQuery statements
// to support JQuery-UI componenets
});
});
此代码作为<script>
包含在具有<div class="container" ng-view>
元素的 index.html 中。
我的想法是我们需要一个两步的过程:
首先JQuery
对文档就绪的HTML事件做出反应,并使用$viewContenLoaded
元素检索的$scope
将侦听器附加到Angular的[ng-view]
。
然后,每次加载视图时,我的JQuery
代码都会被执行,JQuery UI
组件会被激活并连线。
显然我的逻辑在某处有缺陷。请指出我正确的方向。
附加信息(发布于2014年3月31日):
我的其余代码(控制器,服务,路由)都是用TypeScript
编写的。
答案 0 :(得分:1)
需要编译该元素以便将角度范围绑定到该元素。你可以尝试类似的东西:
var scope = angular.injector(['ng']).get('$rootScope').$new();
var compile = angular.injector(['ng']).get('$compile');
compile(elem)(scope);
scope.$on('$viewContentLoaded', function(){
// Your code
});
虽然我建议把你的代码放在一个指令中。上面显示的代码只不过是一种破解和危险,因为现在您可以全局访问您的服务。