2015-03-31 57 views
0

我對AngularJS模型有問題。目前我有兩個選擇標籤,我用一些異步動作填充它,然後我只是通過收到的數據設置選擇標籤模型。一切運作良好,但如果我手動更改選擇標記(選項),那麼模型不能再被這個異步操作改變 - 腳本保持我手動選擇模型 - 我確信我將正確的數據分配給模型從服務器響應,因爲它直到我不改變它手動...AngularJS模型在手動更改選項後沒有更新

<select ng-model="sModel" ng-change="changeAction(sModel)" name="sList" id="sList" ng-options="s.name for s in sList track by s.sId"></select> 

(第二選擇看起來像上面)。

如果有人有一些想法,爲什麼ngModel不能手動更改後進行更新,請回復:)

+0

聽起來像一個範圍界定問題,你有嵌套控制器嗎? – tymeJV 2015-03-31 18:19:09

+1

你能提供一些更多代碼的可複製案例嗎? – floribon 2015-03-31 18:20:06

+0

我沒有看到問題。 javascript在哪裏? – 2015-03-31 18:29:50

回答

1

您必須使用直接變量納克模型。當在html輸入類型中使用ngmodel時,在ng模型中使用對象類型,其他值不反映。

$scope.req={value:""}; 
在HTML中使用

<select data-ng-model="req.value"></select> 
+0

實際上,我將明確的對象設置爲ngModel: – Mariusz 2015-03-31 18:23:30

+0

不要使用直接變量使用像上面顯示的json對象。試一試 – 2015-03-31 18:26:06

+0

對不起,我有服務器響應的JSON格式。我不能使用直接變量,因爲ng-model是通過ng-options數據選擇的,並且應用程序中的更多細節都與它相關聯。 我想知道它怎麼可能。自動或手動更改是完全相同的動作,數據等。 – Mariusz 2015-03-31 18:40:39

0

奇怪,但我固定它 - 這是因爲 '選擇' 是由DIV其中有NG-控制器包裹。控制器實際上包含一項具有更改選擇選項的操作在刪除這個ng-change後,它並沒有幫助,但是刪除了整個控制器聲明。

<div ng-controller="sController"> 
<select ng-model="sModel" ng-change="changeAction(sModel)" name="sList" id="sList" ng-options="s.name for s in sList track by s.sId"></select> 
</div> 

有人能解釋我這個異常嗎? ; /模型總是在最初創建的主/通用控制器(父級)中進行更改。

http://jsfiddle.net/nkr33bo0/ 
相關問題