如何使用ng-options和ng-model绑定父范围变量?

时间:2018-03-30 05:30:17

标签: javascript angularjs angular-ui-router

我使用AngularJS和UI路由器。我是一个父母国家&一个孩子。父状态包含一个初始化为null的变量。在子女状态下,我显示了如下的下拉列表

<select name="" ng-model='$parent.fruit' ng-options="fruit as fruit.name for fruit in fruit_list">
  <option value="" selected="selected">Select a fruit</option>
</select>

$parent.fruit返回null

2 个答案:

答案 0 :(得分:0)

我强烈建议你命名你的父控制器。您可以在定义控制器时执行此操作,如

<div ng-controller="parentController as pc">

然后在您的代码中,您可以使用示例

<select ng-model="selectedFruit" ng-options="fruit.name for fruit in pc.fruit"></select>

如果您想使用选项标签,那么尝试在选项标签上添加ng-options是错误的,您可以使用ng-repeat。

<select name="" ng-model="selectedFruit">
  <option ng-repeat="fruit in pc.fruits" value="{{fruit.name}}">{{fruit.name}}</option>
</select>

如果这些例子不能满足您的需求,请找一个例子:https://www.undefinednull.com/2014/08/11/a-brief-walk-through-of-the-ng-options-in-angularjs/

答案 1 :(得分:0)

经过研究,我发现,这创造了儿童范围。因此,需要使用$parent.$parent.fruit代替$parent.fruit

<select name="" ng-model='$parent.$parent.fruit' ng-options="fruit as fruit.name for fruit in fruit_list">
  <option value="" selected="selected">Select a fruit</option>
</select>

参考 - https://github.com/angular-ui/ui-select/issues/18