我试图以一种简单的方式解释我的复杂问题,所以我做了一些不会影响问题的假设,我有一个服务和一个控制器,我用来从json文件中获取数据,如此
app.service('getDataService', function($http) {
var promise = $http({method: 'GET',url:'js/d.json'}).success(function (result) {
var userInfo = result.data;
return userInfo;
});
return promise;
});
app.controller("someCtrl",["$scope","$http","$compile","$window","$document","getDataService", function($scope,$http,$compile,$window,$document,getDataService) {
$scope.create = function() {
getDataService.then(function(result) {
$scope.data = [];
$scope.data = result.data;
}
angular.element(document.getElementById("tab")).append($compile("<cust-dir cust-data=\"data\">");
}
}]);
我的HTML视图就像这样
<div ng-controller = "someCtrl">
<button ng-click = create()>Button</button>
<div id = "tab"></div>
</div>
如果cust-dir是我传递的自定义指令&#34;数据&#34;并且假设在单击按钮时打开了一个小部件,其中我使用$ compile动态地附加了cust-dir。 当我第一次打开小部件时,每件事情都工作得很好但如果我关闭小部件并尝试打开它,下次我收到错误的&#34; ng-dupes&#34;, 这是由我使用ng-repeat在页面上显示数据的cust-dir模板产生的,我尝试使用&#34; track by&#34;但它显示重复数据,我认为这是与$ http相关的问题,当我第二次打开小部件时,它会添加重复数据。我上周一直在讨论这个问题。请帮我解决这个问题。