Angularjs:正确选择ng-options

时间:2014-02-27 11:53:42

标签: angularjs select ng-options

对于我正在做的angularjs的select标签:

<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数组。

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

你的方式是一种好方法。

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

以下是我的示例代码。

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>

Angular Code

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

答案 2 :(得分:0)

您不需要编写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>

除此之外,选择看起来是正确的。