如何使用参数在HTML中调用AngularJS中的$ location

时间:2015-08-02 05:57:25

标签: angularjs

我有一个选择列表:

<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

2 个答案:

答案 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操作转移到控制器上,这会改变模型。希望这会有所帮助。