2015-03-31 66 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/