我找不到使用AngularJS 设置null
值的优雅方法<select>
.
HTML:
<select ng-model="obj.selected">
<option value=null>Unknown</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
{{obj}}
Run Code Online (Sandbox Code Playgroud)
JS:
$scope.obj ={"selected":null};
Run Code Online (Sandbox Code Playgroud)
加载页面时,选择第一个选项,这是好的,输出是{"selected":null}
.在切换到另一个选项后重新选择第一个选项时,输出变为{"selected":"null"}
(带引号),这不是我所期望的.
运行示例:http: //plnkr.co/edit/WuJrBBGuHGqbKq6yL4La
我知道标记<option value=null>
不正确.我也试过,<option value="">
但它对应一个空的String而不是null:因此,第一个选项没有被选中,另一个选项在默认选择第一个选择后消失.
任何的想法 ?
我对AngularJS(版本1.2.6)有一个问题.
由于某些原因我无法理解我无法访问length
存储在其中的字符串变量的属性$scope
.
在模板中:
String '{{myObject.someVariable}}' has length '{{myObject.someVariable.length}}'.
Run Code Online (Sandbox Code Playgroud)
在控制器中:
$scope.myObject = {} ;
//asynchronuous loading of myObject
SomeService.loadObject(function(result)){
$scope.myObject = result ;
console.log("Content: '%s', length:'%i'",$scope.myObject.someVariable,$scope.myObject.someVariable.length);
$scope.$apply();
});
Run Code Online (Sandbox Code Playgroud)
结果是:
String 'aaaa' has length ''.
Run Code Online (Sandbox Code Playgroud)
在控制台中我正确地看到了 Content:'aaaa', length:'4'
这很令人讨厌,因为我根据字符串大小显示(或不显示)模板的某些部分.
更新
$scope.myObject.someVariable
是一个字符串.我在回调函数中添加了两个监视器的断点:
$scope.myObject.someVariable
:"aaaa"typeof($scope.myObject.someVariable)
:"字符串"