【问题标题】:Angularjs: Select ng-options right wayAngularjs:以正确的方式选择 ng-options
【发布时间】:2014-03-30 20:04:37
【问题描述】:

对于我正在做的带有 angularjs 的选择标签:

<select ng-init="getdata()" data-ng-model="ob.id" 
        data-ng-options="level.id as level.desc for level in levels" 
        data-ng-selected="ob.id == level.id"> 
        <option value="0">default...</option>
</select>

...但是这是正确的方式吗,因为网络上有很多其他方式? getdata() 获取 $scope.levels 数组。

【问题讨论】:

    标签: angularjs select ng-options


    【解决方案1】:

    你不需要写ng-selected,没必要。此外,ng-init 应该只在非常特定的情况下使用 (nginit),因此 OZ 提到最好从控制器调用 getData()。

    <select data-ng-model="ob.id" 
            data-ng-options="level.id as level.desc for level in levels"> 
        <option value="0">default...</option>
    </select>
    

    除了选择看起来正确之外。

    【讨论】:

    • 其实 ng-init 只是为了这个问题,但我不知道不需要 ng-selected。
    【解决方案2】:

    尽量避免绑定到原语(使用对象代替,例如 - $scope.data)。所以我会将levels 替换为data.levels

    您真正需要在哪里调用getdata() 取决于您,但控制器的初始化可能是更好的选择。

    此外,如果您想保持视图中的数据干净,请尝试在模型(或服务)中声明默认值,而不是在视图中。

    【讨论】:

      【解决方案3】:

      你的方法是好的方法之一。

      我有另一种自定义编码方式。

      这是我的示例代码。

      HTML代码

       <div class="col-sm-6 form-group">
                  <label for="companyName">Tenants</label>
                  <select class="form-control input-lg" ng-model="selectedTenant" 
                   required ng-options="i.CompanyName for i in tenants">
                  </select>
              </div>
      

      角度代码

      $http.get('/tenants')
                     .success(function (response) {
                         response.push({ CompanyName: "Select", TenantId: 0 });
                         $scope.tenants = response;
                         $scope.selectedTenant = response[$scope.tenants.length - 1];
                         $scope.$apply();
                     })
      

      【讨论】:

        猜你喜欢
        • 2017-12-31
        • 2012-10-14
        • 2014-07-26
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 2014-09-15
        • 1970-01-01
        相关资源
        最近更新 更多