Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng单击不使用django/angular点火_Javascript_Django_Angularjs - Fatal编程技术网

Javascript ng单击不使用django/angular点火

Javascript ng单击不使用django/angular点火,javascript,django,angularjs,Javascript,Django,Angularjs,我有一个由Django呈现的模板,我试图用angular添加一些js行为。这是一种痛苦 这是表格。ng_控制器是一个django上下文变量,由我的视图设置 <form method="POST" action="#" ng-controller="{{ ng_controller }}" > <a href="#" ng-click="search('{% url 'appname:search' %}')" class="button">Search</a

我有一个由Django呈现的模板,我试图用angular添加一些js行为。这是一种痛苦

这是表格。
ng_控制器
是一个django上下文变量,由我的视图设置

<form method="POST" action="#"  ng-controller="{{ ng_controller }}" >

  <a href="#" ng-click="search('{% url 'appname:search' %}')" class="button">Search</a>
  <a href="#" ng-click="add()" class="button">Add</a>


<div class="small-12 large-4 columns content-box">
 <h4>Search Results</h4>
  <div class="small-12.large4" id="search_results" >

</div>
问题在于#search_results元素中正确交换的result.data包含不触发的
ng click
指令

 <a href="#" ng-click="foo()" class="button" >Do Foo</a>
 <a href="#" ng-click="console.log('foo');" class="button">Log Foo</a>

当这些元素存在时(单击搜索后),它们除了跳转到页面顶部之外,什么都不做,就像锚元素一样。没有错误或任何东西。(为了便于讨论,
foo()
只需调用
console.log'foo'


我的怀疑是,因为这些指令是在页面加载之后添加的,它们实际上并不是通过angular连接起来的。那么这是正确的吗?如果这是问题所在,我如何让它们在这个方案中编译指令,或者以其他方式获得我要寻找的行为?我知道通过jQuery wh操作DOM存在问题ile使用Angular,因此,如果有人建议我通过使替换代码更加习惯化来解决这个问题,我将不胜感激,只要它可以通过向Django端点发出AJAX请求来实现这一点。

事实证明,我是正确的,结果没有被编译。这是一个显式编译结果的问题

上面的成功回调将替换为以下内容:

success = (result) =>
     search_results = $(result.data)
     $("#search_results").replaceWith(search_results)
     @$compile(search_results)(@$scope)

我还将$compile提供程序注入到控制器类中。

每当您将Angular与jQuery混合使用时,都会遇到问题。但具体来说,在您的情况下,它看起来不像
结果。数据
有任何角度表达式-因此它应该可以工作。您可以检查呈现的页面(在单击按钮之前)吗看看你是否有一个
在搜索前呈现的页面中有一个
。交换出来的
结果。数据
确实有
ng click
指令——这些不是角度表达式吗?我是角度表达式新手,我们肯定没有按预期的方式使用它。啊,我误解了你的问题。是的,使用角度表达式/指令注入HTML在没有编译的情况下是行不通的-你是对的。我最初认为没有向
搜索结果添加任何内容
-并不是说它没有启动。
success = (result) =>
     search_results = $(result.data)
     $("#search_results").replaceWith(search_results)
     @$compile(search_results)(@$scope)