在视图中使用compile in指令和ng repeat的组合会阻止正确更新范围元素列表

Use combination of compile in directive and ng-repeat in view prevent updating scope elements list correctly

本文关键字:组合 列表 元素 范围 更新 repeat 视图 compile in ng 指令      更新时间:2023-09-26

这是我在plunker上的代码(更新了链接),很抱歉,我没能让它再次工作,因为它在我的项目中工作,但它有助于阅读目的,而不是粘贴我的代码。

$scope.elements = [
{
  'value': 'Default text', 
  'elem_type_name': 'text field'
}, {
  'value': 'example@email.com', 
  'elem_type_name': 'email field'
}];

事实上,最初我的代码是有效的,我能够很好地呈现正确的视图,但在我的代码中,我在页面底部有一个提交按钮。

当点击它时,它会生成一个新的API调用来更新我当前的范围变量(元素列表)。

其中一些可以在API调用后保留,一些可以删除,一些可以添加新的。

不幸的是,当我点击这个提交按钮时,范围奇怪地没有得到很好的分析,所以如果相同的元素仍然具有相同的id,那么它就是重复的。如果我得到一个全新的元素列表,我会看到以前的元素+新的元素。

我似乎遇到了与此相同的问题:另一个stackoverflow问题,但在我的情况下,每次单击按钮后,我需要在每次API调用之前完全清空元素范围变量。

你知道吗?

非常感谢提前

在您的调用中,您可以设置$scope.elements = '',然后分配$scope.elements = response.data,或者您将结果定义为的任何值。例如:

$http.get('jsonFile.json')
    .then(function(jsonData) {
        $scope.elements = '';
        $scope.elements = jsonData.data;
    });

这将清除$scope.elements,然后仅使用新的响应数据进行更新。