2016-11-19 41 views
0

我有一个角度应用程序,它从JSON文件中提取数据,该文件通过指令模板为用户使用ng-repeat填充网页。对Anuglarjs ng-repeat进行DOM更改后,Javascript变量未更新

当最初加载的网页,在(p)的元素的ID(从JSON文件)为1

<p id="pollidholder" style ="display:none" ng-bind-html="item.id">{{item.id}}</p> 

一旦用户按下按钮(接着,NG-点击),则ID通过指令模板在<p>元素中更新2。我正在使用该ID来注册用户输入。

在我的后端使用Javascript(uservotedd.js),我使用

var pollidholder1 = document.getElementById('pollidholder').innerHTML; 

提取从<p>元素的ID。

但是,对于var pollidholder,ID不会从1更新为2,即使在页面本身上更改了<p>元素。

一旦html <p>元素发生变化,我该如何更新我的Javascript变量?请帮忙。我想避免重写我的代码。请注意,当用户点击提交按钮时,警报消息不会更新以反映ID中的更改。

如果您有任何问题,请让我知道。充其量我是初学者编码员。

请在这里找到plunker例如https://embed.plnkr.co/3kIxhW2Iq5lKQm81csln/

+0

问题说明未清除! –

+1

当你已经有'item'中的数据时,为什么需要使用'getElementById()。innerHTML'?请提供一个[mcve]并花几分钟时间通读[问] – charlietfl

+0

我已在原始文章中添加了plunker示例 –

回答

0

只是不要在你的HTML这里使用onclick

<div class="simple-button" onlclick="idchange()" ng-click="change()" style ="font-size: 4vw ">Next</div> 

idchange所有代码到控制器的change功能,会让你可以访问你需要的所有变量。例如:

$scope.change = function() { 
    $scope.indexToShow = ($scope.indexToShow + 1) % $scope.items.length; 
    alert($scope.items[$scope.indexToShow].id); 
} 

不要试图躲闪角的封装,使用onclick而不是ng-click会造成很多混乱的初学者。只需使用ng-click,你就会好起来的。

+0

谢谢。这正是我需要的。我把var pollidholder1放在我的app.js中,并在我的javascript uservotedd.js中重用。它像一个魅力。再次感谢 –