在使用AngularJS加载应用后,我使用div
创建了一些createElement('div')
(使用Ajax)。
在每个div
,我将ng-click
设置为
elem.setAttribute("ng-click","nameValue='"+data.name+"'");
并在html中看到
<div ng-click="nameValue='Simone'">Click</div>
但它不起作用。它可以工作,如果我把它放在html中,但如果我用Ajax动态创建div,它就不起作用。
编辑:感谢您的回复。我试着更好地解释我的“项目”(我正在研究AngularJS)
在我的应用中,使用ngRoute我加载了主页模板。
然后在HomePageController
中我调用一个函数来在Ajax连接之后创建帖子。
直到这里一切都好。
解决我的问题:
app.controller('HomePageController',['$scope', function($scope){
....
createPostWithAjax($compile)
....
}]);
//ajax function
function createPostWithAjax($compile){
//after ajax connection
$compile("div.postCreateAfterCompilation")($scope);
}
这是对的吗?或者我完全改变了方法?
答案 0 :(得分:2)
答案 1 :(得分:1)
这不是有角度的方式。当您像这样编写HTML时,Angular并不知道它,也不会“评估”它。
您需要对其进行编译才能通过angular进行处理:
$compile( elem )($scope)
但如果你给我们更多关于这方面的背景信息,我们可以帮助你做 Angular方式。您可能不必以这种方式编写HTML,而是依赖于特定的指令。这只是你想要了解更多,如果你对这个解决方案没问题就好了。
答案 2 :(得分:0)
或者您可以查看此示例
function compile(element){
var el = angular.element(element);
$scope = el.scope();
$injector = el.injector();
$injector.invoke(function($compile){
$compile(el)($scope)
})
}