Angularjs:正确选择ng选项

Angularjs:正确选择ng选项,angularjs,select,ng-options,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...</op

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

尽量避免绑定到原语(改用对象,例如-$scope.data)。因此,我将把
级别
替换为
数据。级别

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


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

您的方法是一种好方法

我有另一种自定义编码的方法

这是我的示例代码

Html代码
您不需要编写ng selected,这不是必需的。另外,ng init应该只在真正特定的情况下使用(),所以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>

违约

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

事实上,ng init只是针对这个问题,但我不知道不需要选择ng。
$http.get('/tenants')
               .success(function (response) {
                   response.push({ CompanyName: "Select", TenantId: 0 });
                   $scope.tenants = response;
                   $scope.selectedTenant = response[$scope.tenants.length - 1];
                   $scope.$apply();
               })
<select data-ng-model="ob.id" 
        data-ng-options="level.id as level.desc for level in levels"> 
    <option value="0">default...</option>
</select>