AngularJS:函数在动态创建的ng repeat中不执行
这个问题越来越离题了。基本上,我有一个指令,它创建一个ng repeat,在动态变化的集合上进行迭代。我所说的动态更改是指JSON数据经常使用新集合进行更新 这些ng重复中的函数没有被调用,也就是说,我在控制台上看不到它们。ng重复的项目将显示在视图中。但是,当我使用常规ng重复并迭代特定集合时,操作可以正常工作。我猜处理ng repeat的指令dyn ng repeat有一些问题,但我无法理解 下面是一个JSON示例。model1和model2是不同的集合,稍后将使用类似的结构创建更多集合,如model3和model4。在视图中,我只想显示一个模型,而不是所有模型AngularJS:函数在动态创建的ng repeat中不执行,angularjs,angularjs-directive,angularjs-ng-repeat,Angularjs,Angularjs Directive,Angularjs Ng Repeat,这个问题越来越离题了。基本上,我有一个指令,它创建一个ng repeat,在动态变化的集合上进行迭代。我所说的动态更改是指JSON数据经常使用新集合进行更新 这些ng重复中的函数没有被调用,也就是说,我在控制台上看不到它们。ng重复的项目将显示在视图中。但是,当我使用常规ng重复并迭代特定集合时,操作可以正常工作。我猜处理ng repeat的指令dyn ng repeat有一些问题,但我无法理解 下面是一个JSON示例。model1和model2是不同的集合,稍后将使用类似的结构创建更多集合,如
{
{
"model": "model1",
"children": [
{
"action": "removeChild",
"model": "item",
"text" : "remove this child"
}
]
},
{
"model": "model2",
"children": [
{
"action": "removeChild",
"model": "item",
"text" : "remove this child"
}
]
}
}
以下是HTML:
<div ng-repeat="field in fields">
<div dyn-ng-repeat="item in {{field.model}}">
<div ng-repeat="field in field.children">
<div dyn-click click-action="{{field.action}}" click-model=" {{field.model}}">{{field.text}}</div>
</div>
</div>
</div>
以下是dyn click指令的代码:
'use strict';
exports = module.exports = function (ngModule) {
ngModule.directive('dynNgRepeat', function($compile){
return{
scope:true,
link:function(scope,element,attr){
element[0].removeAttribute('dyn-ng-repeat');
element[0].setAttribute('ng-repeat', attr.dynNgRepeat + ' track by $index');
$compile(element[0])(scope);
}
};
});
};
'use strict';
exports = module.exports = function (ngModule) {
ngModule.directive("dynClick",function($compile) {
return {
restrict: 'A',
scope:true,
link: function(scope,element,attrs) {
$(element).click(function(e, rowid){
scope.$eval(attrs["clickAction"]) (scope.$parent.$eval(attrs["clickModel"]), scope.$index);
});
}
};
});
};
函数removeChild从父控制器执行,用于删除该子控制器:
exports = module.exports = function (ngModule) {
ngModule.controller('HomeCtrl', function ($scope, $timeout, $http, $state, $stateParams, limitToFilter, Restangular, $rootScope, $translate) {
$scope.removeChild = function(model, index){
$rootScope.field.model.splice(index, 1);
$scope.$digest();
};
};
关于removeChild函数为什么不使用dyn ng repeat指令执行,有什么想法吗
我还为此问题创建了一个Plunker:。但是,在Plunker中,函数正在被调用,但存在问题。我真的不知道为什么在Plunker中调用这个函数,但在我的应用程序中却没有。我已经在这几天了,在这一点上,一个新的视角可能会有所帮助
提前感谢您的帮助。您的plunker在控制台中有很多错误-首先修复它们这些指令与普通指令做相同的事情的目的是什么?这个“dynNgRepeat”做了完全相同的事情,摆脱那个笨蛋,和dynClick一样。只需点击。由于问题只存在于这些指令中,因此可能与它们创建的作用域有关。摆脱这些。你的代码太大,可能包含多个概念/编码错误。尝试将plunkr减少到再现错误的最小代码量。也许你在做这件事的时候会明白的。新的Dev&floribon-我会努力的。只是让您知道这可能需要几个小时。ribsies-正在动态生成每个ng重复和单击操作的模型,我需要一个自定义指令将该数据更改为ng重复和单击操作可以理解的模型。