2016-11-19 81 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中重用。它像一個魅力。再次感謝 –