【问题标题】:Can't set select value from my controller, Angular JS无法从我的控制器 Angular JS 中设置选择值
【发布时间】:2014-10-13 20:51:28
【问题描述】:

From this example

我正在尝试从我的控制器中设置选择值,即使我按照此处许多问题中的说明设置了 ID,这对我也不起作用。唯一的区别是我使用 ng-init 设置了默认值。如何从控制器设置值?

DOM:

<select ng-model="storeorder" ng-init="storeorder = 0" ng-change="storeOrderChange(storeorder)">
    <option value="0">-- All orders --</option>
    <option ng-repeat="obj in orders" value="{{ obj.id }}">{{ obj.name }}</option>
</select>

函数内的JS:

$scope.orders = data;
$scope.storeorder = parseInt($scope.order); // Tried without parseInt also

console.log($scope.storeorder) 返回正确的值,但它没有在浏览器 DOM 中设置正确的值。

【问题讨论】:

    标签: javascript angularjs select angularjs-scope


    【解决方案1】:

    使用ng-options:

    <select ng-model="storeorder" ng-init="storeorder = 0" ng-change="storeOrderChange(storeorder)" ng-options="obj.id as obj.name for obj in orders">
    

    【讨论】:

      【解决方案2】:

      如果你不想使用ng-options(这是正确的方式),你可以尝试使用

      ng-selected : Working Demo : http://jsfiddle.net/nf2m0rr1/
      
      Example : 
      
       <body ng-app ng-controller="OrderCtrl">
         <div>Order is: {{storeorder}}</div>
         <select ng-model="storeorder">
           <option ng-selected="{{order.value == storeorder}}" ng-repeat="order in orders"   value="{{order.value}}">{{order.displayName}}</option>
         </select>
       </body>
      
       function OrderCtrl($scope) {
        $scope.storeorder = 2;
      
        $scope.orders = [{
          value: '1',
          displayName: 'Order One'
        }, {
          value: '2',
          displayName: 'Order Two'
        }]
      }
      

      【讨论】:

      • 谢谢你,用 ng-options 去地狱 :)
      • 你是个天才——这解决了我所有的问题。谢谢。
      【解决方案3】:

      ng-options 解决了 50% 的问题,但我仍然需要处理 DOM 中的默认值并更改 ng-init 选项。这真的让我很烦。这是完整的解决方案,它使我能够不从控制器设置任何东西:

      <select ng-model="storeorder" ng-options="orderdata.id as orderdata.name for orderdata in orders" ng-init="storeorder = order == 0 ? 0 : order" ng-if="orders.length > 0" ng-change="storeOrderChange(storeorder)">
          <option value="">-- All orders --</option>
      </select>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 2016-06-03
        相关资源
        最近更新 更多