Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 click在动态div上不起作用_Javascript_Angularjs_Angularjs Ng Click - Fatal编程技术网

Javascript ng click在动态div上不起作用

Javascript ng click在动态div上不起作用,javascript,angularjs,angularjs-ng-click,Javascript,Angularjs,Angularjs Ng Click,我正在开发一个带有angular的应用程序,我需要从Web服务插入一些数据。我动态创建div: for(var i = 0 ; i < data.Output.length ; i++){ var listitem = document.createElement("div"); listitem.setAttribute("ng-click","doMove()"); listitem.className = "list

我正在开发一个带有angular的应用程序,我需要从Web服务插入一些数据。我动态创建div:

for(var i = 0 ; i < data.Output.length ; i++){   
          var listitem = document.createElement("div");
           listitem.setAttribute("ng-click","doMove()");
          listitem.className = "list-item";
          var name = document.createElement("span");
          name.className = "name"
          name.appendChild(document.createTextNode(data.Output[i].name));
          var link = document.createElement("a");
          link.appendChild(document.createTextNode('›'));


          listitem.appendChild(name);
          listitem.appendChild(link);
        wrapper.appendChild(listitem);
        }

正如一条评论所建议的,您应该尝试使用
ng repeat
以声明的方式执行此操作。但是,如果您在JS中无法执行此操作,则应该制定一个指令。为了将angular ish构造附加到新创建的指令DOM内容,您需要使用
$compile
服务

对于
ng重复

<div ng-repeat="item in data.output">
    <div class="list-item" ng-click="doMove()">
        <span>...</span>
    </div>
</div>

用ng repeat试一试。我假设您使用的是
$scope
,而不是
控制器作为

<div ng-repeat="d in data.Output" ng-show="data" ng-click="doMove()">
    <span>{{d.name}}</span>
</div>

{{d.name}

通过使用
ng show=“data”
仅当设置了
data
时,才会显示div。因此,在默认情况下将其设置为
false
null
undefined

我很快就为您设置了一个plunkr。

angular.module('plunker',[]);
角模('plunker')
.组件('列表'{
控制器:“ListController”,
templateUrl:'list.html'
})
.controller('ListController',function(){
this.listItems=[
{name:'item 1',value:'Description to Description the item.'},
{name:'item 2',value:'Description to Description the item.'},
{name:'item 3',value:'Description to Description the item.'},
{name:'item 4',value:'Description to Description the item.'},
{name:'item 5',value:'Description to Description the item.'}
];
});
  • {{item.name}} {{item.value}}

也许您应该研究一下创建动态内容的
ng repeat
。否则,angular将无法了解这些属性和函数。如果这还不够的话,请查看
$compile
,但我会选择ng-repeat@Hoyen你不必粗鲁。。。如果我知道angular,我不会一直问你谢谢@Astasiancan你能告诉我如何使用ng repeat转换它吗。我没有弄明白:)@AstasianYes我将以回答的形式编写我正在控制器中获取数据,如果这是您的意思,您是将控制器中的数据设置为
$scope.data=receivedData
,还是将控制器用于html中,如
ng controller=“Ctrl as c”
?在cotroller中,我执行http请求。将业务逻辑从控制器中拆分为服务始终是一个好主意。因此,如果我将data.Output指定给一个变量,那么我可以通过$ctrl在页面中访问它。该变量?是的,这是正确的。顺便说一下,你应该看看Angular By CodeSchool的免费视频课程:这对我开始理解Angular.request.success(function(data){item=data.Output;})有很大帮助;那么我应该能够通过$ctrl.item访问它?我已经更新了我的plunkr以使用以下API数据:。看@BogdanConstantin这对你有帮助吗?还是你仍然有困难?
<div ng-repeat="item in data.output">
    <div class="list-item" ng-click="doMove()">
        <span>...</span>
    </div>
</div>
 function linkFunc($scope, elem, attrs){

     //make sure to inject the $compile service in your directive
     $compile( elem )( $scope )

 }
<div ng-repeat="d in data.Output" ng-show="data" ng-click="doMove()">
    <span>{{d.name}}</span>
</div>