Angularjs ng selected是如何工作的?

Angularjs ng selected是如何工作的?,angularjs,Angularjs,这里是一个片段。Q2如我所料被选中 <select name="quarter" ng-model="Quarter" > <option value="1" >Q1</option> <option value="2" ng-selected="Quarter=='Q1'">Q2</option> <option value="3">Q3</option> <option

这里是一个片段。Q2如我所料被选中

<select name="quarter" ng-model="Quarter" >
    <option value="1" >Q1</option>
    <option value="2" ng-selected="Quarter=='Q1'">Q2</option>
    <option value="3">Q3</option>
    <option value="4">4</option>
</select>

Q1
问题2
第三季度
4.
'Q1'
更改为
'Q2
”不会像我预期的那样进行选择。现在放置
ng selected=“Quarter=='Q1'”
不会使Q1被选中,直到我删除
ng selected=“Quarter=='Q2”


wtf。假设这是如何工作的?

如果将所选ng放在option元素上,则当所选ng值为true时,将选择您的选项。在您的情况下,当季度等于Q1时,选择选项Q2

如果要选择按季度传递的值,必须将所选的ng放在select元素上:

<select name="quarter" ng-model="Quarter" ng-selected="Quarter"
        ng-options="Quarter for Quarter in Quarters" >
    {{Quarter}}
</select>

{{Quarter}}
请查看。


{{h}
如果您想选择24小时,您可以这样做。

如下:

<body ng-controller="MainCtrl">
  {{referenceNumber}}
    <select ng-model="referenceNumber">
            <option ng-selected="!referenceNumber">Default</option>
            <option ng-repeat="number in numbers track by $index" ng-value="number">{{number}}</option>
        </select>
  </body>
<select ng-model="purchase.product" name="purchase.product" class="u-full-width" ng-options="product.id as product.name for product in products"></select>

{{referenceNumber}
违约
{{number}}
“我认为选择NGO的主要原因之一是设置默认值 值取决于模型是否设置正确。”joshkurz于2014年3月3日发表评论

因此,正确的方法是仅在您的情况下依赖ng模型。 正确的方法(预先选择一个选项)是这样的:

<body ng-controller="MainCtrl">
  {{referenceNumber}}
    <select ng-model="referenceNumber">
            <option ng-selected="!referenceNumber">Default</option>
            <option ng-repeat="number in numbers track by $index" ng-value="number">{{number}}</option>
        </select>
  </body>
<select ng-model="purchase.product" name="purchase.product" class="u-full-width" ng-options="product.id as product.name for product in products"></select>

参考:


  • ng selected
    指令采用一个布尔值或一个表达式,该值或表达式导致一个真/假布尔结果

    您只需要传递它的值
    true
    ,使其工作,或者传递一个导致
    true
    的表达式

    它与
    标签的ng型号无关

    以下是这种行为的一个例子:

    <select name="quarter" ng-model="Quarter" >
        <option value="1" >Q1</option>
        <option value="2" ng-selected="true">Q2</option>
        <option value="3">Q3</option>
        <option value="4">Q4</option>
    </select>
    
    
    Q1
    问题2
    第三季度
    第四季度
    

    这将使选项Q2在默认情况下处于选中状态。

    这似乎对我有效,还是您不想这样做@罗尼:这就是我想做的。嗯。我删除了我所有的控制器代码,除了分配给Q1和。。。我想这件事很不对劲html@Ronnie:相关:最简单的方法是使用ng init
    有趣但也是wtf。我在api网站docs.angularjs.org/api/上没有看到ng选项,而且它似乎与ng repeater不兼容ng选项是select指令的一个属性:您的小提琴已被标记为不安全,因为它只有一个嵌入的iframe作为内容。。。!!!粗略的!真奇怪。。。我给了一个官方文件的链接。谢谢似乎它只是解决了选择默认选项的问题,但是当选择默认选项时,模型没有正确更新。请给出更新模型的解决方案