我有一个选择列表:
<select name="forma" onchange="location = Category(SCID: this.value)">
<option value="38">Home</option>
<option value="39">Contact</option>
<option value="40">Sitemap</option>
</select>
在选择一个选项时,我想使其等同于http://localhost/#/Category/38/。
怎么做?
我试过这个:location = Category(SCID:this.value)
但它给出错误:
Uncaught SyntaxError: missing ) after argument list
答案 0 :(得分:2)
我知道您想要内联编写代码并更改位置。我对你的建议不是。
当选择调用函数并编写内联的javascript代码时,请调用函数。它使您的代码保持清洁,易于理解和维护。
因此,在这种情况下,将模型附加到您选择,以便当用户选择值时,您知道用户选择了哪个值:
<select name="forma" data-ng-model="selectedFormaValue"
data-ng-change="updateLocation()">
<option value="38">Home</option>
<option value="39">Contact</option>
<option value="40">Sitemap</option>
</select>
请注意,我附加了一个ng-change
指令,当选择值发生变化时,该指令会调用函数updateLocation()
。
您的updateLocation()
功能应如下所示:
$scope.updateLocation = function () {
//Make sure that a value is selected
if ($scope.selectedFormaValue) {
$location.path('/Category/' + $scope.selectedFormaValue);
}
};
这会导致页面转到http://locahost/#!/Category/<SelectedValue>
答案 1 :(得分:0)
我不认为在angularjs中有任何onchange属性来选择指令。您可以使用callmekatootie所述的ngChange。您可以尝试在内联时进行内联,也可以将其绑定到控制器中的范围函数。你应该总是将dom操作转移到控制器上,这会改变模型。希望这会有所帮助。