【发布时间】:2016-12-15 16:48:01
【问题描述】:
我使用 ng-options 进行选择,它使用来自控制器之一的数据。数据是 ajax 在应用程序开始时检索到的二维数组,键值对如下:
'option1' : array[ 1: "Test", 2: "Test2" ],
'option2' : array[ 12: "abc", 26: "zyc" ],
'option3' : array[ 14: "fdfd", 27: "fdf" ],
'option4' : array[ 15: "dff", 28: "dffd" ],
并查看:
<select name="selectedLink" id="selectedLink" ng-model="selectedLink" ng-options="key as value for (key , value) in links[selectedType]" ng-change="changeLinkName()" placeholder="Please Select" class="annotation-element">
应用启动时一切正常,但修改我的链接数组后出现问题。用户可以添加新元素,它看起来像:
// Watch new element variables
$scope.addNewElement = function() {
var newElement = $('#inputElementId').val();
// (...)
$scope.links[newElement[0]][newElement[1]] = newElement[2];
$scope.selectedLink = newElement[1];
// (...)
};
问题是视图没有刷新。选择选项中仍然只有旧的链接数组数据。我尝试使用 $scope.$apply,但它不起作用。
我只能使用jquery“重绘”所有选项,但是我不能使用ng-model,ng-change等。我应该怎么做才能在更改数组数据后触发刷新UI?
【问题讨论】:
-
如果可能,请发布小提琴。我还看到你正在使用
var newElement = $('#inputElementId').val();- 我不明白你为什么不使用directive或“绑定”方法——Angular的主要优势。 -
由于数据“传输”,我使用隐藏字段。我的应用程序在 iframe 中运行,并且在其他 iframe 交互后由父函数设置字段 - 页面通过 fancybox 加载表单,在保存数据通过主窗口到 Angular 应用程序 iframe 之后。
标签: angularjs ajax refresh ng-options angularjs-ng-options