如何使用ng-options添加表示指向其他页面的链接的静态选项。
<select class="form-control"
ng-model="person"
ng-options="person.name for person in persons">
</select>
我正在使用带有ng-options的select元素和预定义的人员列表,其中person是一个对象。我尝试使用ng-repeat,但这种方法不起作用:
<select ng-model="person" onChange = "window.location.href=this.value">
<option value="#/home">Anywhere</option>
<option value="#/current" ng-repeat="person in persons">{{person.name}}</option>
</select>
Varibale $ scope.person获取值“#/ current”。在这种情况下,链接工作,但ng模型失败。变量$ scope.person应代表所选人员。
我期待的是$ scope.person选择了值,除非用户选择“Anywhere”,在这种情况下,他应该被重定向到另一个页面。
“#/ home”和“#/ current”代表网址位置。 “#/ home”是主页,“#/ current”是当前页面。 onChange事件将用户重定向到主页或重新加载当前页面。
因此,当用户选择“Anywhere”时,他应该被重定向到主页。对于任何其他选项,用户页面将不会更改。
答案 0 :(得分:2)
首先,你不应该混合原生的js和angularjs,除非你知道究竟发生了什么。
使用ng-change而不是onchange并检查值是否为&#39; Anywhere&#39;。如果是路线,否则什么都不做。在您的方法中,您在两种情况下都会重定向。
<select ng-model="person" ng-change="selectHandler()">
<option value="">Anywhere</option>
<option value="{{prsn}}" ng-repeat="prsn in persons">
{{prsn.name}}
</option>
</select>
$scope.selectHandler = function(){
if($scope.person == ''){
console.log("route to /home");
//ROUTE WITH $location.path
}
}
这是一个适用于演示的 FIDDLE 。
答案 1 :(得分:0)
在你的ng-repeat试试中,你写道:
ng-model="person"
不存在(因为你做了ng-repeat =&#34;人在人和#34;)
尝试
ng-model="persons"