Angularjs 当指令放置在动态加载的内容中时,如何使其工作?
我已经创建了一个指令,当放在我的主主页上时,它可以正常工作。但是,如果我试图对通过ajax加载的内容使用该指令,那么它就不起作用。为什么?考虑这个包装DePress插件的指令:Angularjs 当指令放置在动态加载的内容中时,如何使其工作?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我已经创建了一个指令,当放在我的主主页上时,它可以正常工作。但是,如果我试图对通过ajax加载的内容使用该指令,那么它就不起作用。为什么?考虑这个包装DePress插件的指令: var app = angular.module("app",[]) app.directive('datePicker', function () { return { restrict: 'A', link: function(scope, element, attrs) { $(el
var app = angular.module("app",[])
app.directive('datePicker', function () {
return {
restrict: 'A',
link: function(scope, element, attrs) {
$(element).datepicker(scope.$eval(attrs.datePicker));
}
}
});
这项工作:
<html lang="en" ng-app="app">
<head>...</head>
<body ng-controller="AppCtrl">
<input date-picker="{changeMonth: true, changeYear: true, yearRange: '2000:2050'}" type="text">
</body>
</html>
但它不再有效。我所有的指令都是这样。它们在我的主页上工作,但是一旦我开始通过ajax调用动态加载新内容,那么这些指令就不再工作了。我对Angular非常陌生,所以如果有任何回答都是初学者的话,我将不胜感激。感谢您的回复 我想这个问题的答案可能会解决你的问题
如何加载动态内容?是否加载外部模板,然后通过jQuery的.html()将其放入页面?如果这是我怀疑的,那么它不起作用的原因是AngularJS不知道有任何变化。有时我通过jQuery使用
$ajax
调用,但有时我只是通过AngularUI的$stateProvider
进行状态更改。在这两种情况下,我都无法让指令在新加载的模板中工作。如何让angular知道这些模板更改?根据该解决方案,我可以这样做:$(“#dynamicContent”).html($compile(“Incrementcount:{{count}}”)(scope))代码>。但是我应该把这个代码放在哪里呢?此外,我正在加载大量模板,而不仅仅是一行代码。我对如何使主控制器之外的任何东西(指令等)工作感到困惑。一旦我开始输入数据,就什么都不起作用了。我找不到任何文章简单解释如何在angular应用程序中绑定ajaxed内容。如果您想通过ajax获取数据,必须使用$resource并从控制器获取数据。如果在angular作用域之外执行此操作,则必须告诉angular您使用$scope更新了作用域。$apply()
<input date-picker="{changeMonth: true, changeYear: true, yearRange: '2000:2050'}" type="text">