【发布时间】:2017-06-27 23:19:56
【问题描述】:
我正在使用 angular 1.6 开发 Ionic 1 应用程序。我有一个动态生成的模板,其中包含从 ng-repeat 生成的 4 个 div 输入(电话 1 和电话 1 值、电话 2 和电话 2 值……)。这些 div 中的每一个都有一个删除按钮。在 ng-click 上,我们将一些参数传递给控制器,包括我们要删除的手机的当前 ID。
<button ng-click="my_delete_function(id)"></button>
所以我的第一次删除工作正常。但是,在我第二次删除时(例如:我刚刚删除了电话 1,现在我想删除电话 2),我控制器中的删除功能不断接收旧参数。我在我的 HTML 中进行了验证,即使我在 ng-click 中有正确的 id“2”,控制器仍然会收到 id“1”。
如果我退出视图然后我回来并尝试再次删除,第一次将再次工作,直到下一次删除失败为止。
我已经试过了
<ion-view cache-view="false">
...
</ion-view>
但这并没有改变任何东西。
有人对可能发生的事情有任何想法吗?
更新 1
我无法发布我的整个模板,但这是一个简化版本:
模板:
<div ng-repeat="phone on phones">
<p> phone.name </p> <button ng-click="delete(phone.id)">
</div>
控制器功能:
$scope.delete = function(id_phone){
// deleting procedure
}
这是在我收到错误 ID 的控制器中。然而,模板(我的 ng-click)发送了正确的模板。
感谢您的帮助
更新 2:问题已解决
解决了我的问题。我的 ng-repeat 上有“track by $index”。我删除了它,现在一切正常。
【问题讨论】:
-
你能发布你的模板和控制器代码吗?
-
我无法发布整个模板,但这里有一个简化版本:模板:控制器功能 : $scope.delete = function(id_phone){ // 删除程序 } 这是在我的控制器中,我收到了错误的 ID。然而,模板(我的 ng-click)发送了正确的模板。感谢您的帮助
phone.name
-
我不知道你为什么会有这个错误,但你能不能试试 ng-repeat="phone on phone track by phone.id"
-
如果您在 scope.delete 中收到的 id 错误,您怎么知道您的 ng-click 发送了正确的 id?也许您在第一次删除后以某种方式覆盖了 id_phone,或者您的数据在删除过程中被损坏。除非我看到更多您的代码,否则我不能说更多。这个单独看起来不错
-
好的,现在它似乎工作了。我在 ng-repeat 的某处有“按索引跟踪”。通过删除它,所有删除现在似乎都可以正常工作。谢谢!
标签: javascript html angularjs ionic-framework