"选择"如果我在ng-switch指令中使用,则无效

时间:2015-06-12 16:15:30

标签: angularjs

选择在ng-switch中不起作用。如果我从ng-switch中取出它,那么它会显示selItems值。

JSFiddle

中的情况如下
<div ng:app>
<div ng-controller='Ctrl'>
      <div ng-switch on="controlType"> 
            <div ng-switch-when="kendoDropDownList">
                <select ng-model="selItems" ng-options="value for value in zoneList">Select Zone</select>
            </div>
     </div>
          {{selItems}}
</div>

3 个答案:

答案 0 :(得分:1)

那是因为ng-switch为他们每个人创建了一个隔离范围。

一种可能的解决方案是使用select:

模型中的$ parent
<div ng:app>
    <div ng-controller='Ctrl'>
        <div ng-switch on="controlType"> 
            <div ng-switch-when="kendoDropDownList">
                <select ng-model="$parent.selItems" ng-options="value for value in zoneList">Select Zone</select>
            </div>
            {{selItems}}
        </div>
    </div>
</div>

http://jsfiddle.net/2827vLLe/1/

答案 1 :(得分:1)

ng-switch-when创建一个独立的范围,selItems值仅在该范围内可用。两个解决方案:

<强> 1。使用$parent

<select ng-model="$parent.selItems" ng-options="value for value in zoneList">

这告诉Angular,将selItems添加到父作用域(Ctrl-Scope)

<强> 2。使用controller as语法

https://docs.angularjs.org/api/ng/directive/ngController

function Ctrl($scope)
{
    this.controlType = "kendoDropDownList";
    this.zoneList = ['rr','rrs','dsa'];

}

<div ng-controller='Ctrl as c'>
      <div ng-switch on="c.controlType"> 
            <div ng-switch-when="kendoDropDownList">
                <select ng-model="c.selItems" ng-options="value for value in c.zoneList">Select Zone</select>
            </div>
     </div>
     {{ selItems }}
</div>

答案 2 :(得分:0)

试试这个fiddel链接。现在工作正常。

  [1]: http://jsfiddle.net/2827vLLe/6/