使用AngularJS,如何将<select>元素绑定到通过服务</select>更新的属性

时间:2012-11-07 18:58:44

标签: javascript angularjs

我有一个显示控制器和一个管理控制器。在我的显示控制器中,我有一个下拉选择器,其中包含已选择的项目列表。

我可以获取显示区域下拉列表以更新列表,添加项目在管理控制器中添加,但我无法弄清楚如何选择下拉列表中的最新项目。

<div ng-controller="MyDisplayCtrl">
  <select ng-model="item" ng-options="i.name for i in items">
  </select>
</div>

我已经制作了一个jsfiddle来说明我的情况。但最终,我的问题是如何将ng-model =“item”绑定到服务更新的数据源。

http://jsfiddle.net/whtevn/mUhPW/2/

2 个答案:

答案 0 :(得分:15)

好吧,看起来我找到了一个非常令人满意的答案。

我通过控制器暴露了存储对象本身

function MyDisplayCtrl($scope, ItemStore) {
    $scope.items = ItemStore.items;
    $scope.item  = ItemStore.currentItem;

    // expose the itemstore service to the dom
    $scope.store = ItemStore

    $scope.getItem = function(){
        return(ItemStore.currentItem);
    }
}

然后直接解决currentItem

<div ng-controller="MyDisplayCtrl">
    <select ng-model="store.currentItem" ng-options="i.name for i in items">
    </select>
</div>

http://jsfiddle.net/whtevn/Cp2RJ/3/

答案 1 :(得分:4)

尝试使用ng-options

<div ng-controller="MyDisplayCtrl">
    <select ng-options="i.name for i in items"></select>
</div>

请参阅:http://docs.angularjs.org/api/ng.directive:select