单击href

时间:2016-05-16 12:56:53

标签: jquery angularjs asp.net-mvc

我是Angular的初学者! 请帮帮我! 有一个webapp(本地目录浏览器)。 我有app.js:

var currentPath = "http://localhost:9298/api/browse";

angular.module("browserApp", [])
    .controller("BrowseController", function ($scope, $http) {
        function getDirectoryBrowseModel(path) {
            $http.get(path, { responseType: "JSON" })
            .then(function (response) {
                $scope.model = response.data
            });
        };
        getDirectoryBrowseModel(currentPath);
    });

和index.cshtml中的html:

<div ng-controller="BrowseController">
 <span ng-repeat="drive in model.Drives">
{{drive.Name}}
</span>

<div>{{model.CurrentDrive.Name}}</div>

<div>{{model.CurrentDirectory.Path}}</div>

<div ng-repeat="dir in model.Directories">
    <a href="#" onclick='$state.reload();'>{{dir.Name}}</a>
</div>

<div ng-repeat="file in model.Files">
    {{file.Name}}
</div>

当我第一次运行应用程序时,它成功运行,我在我的app.js($ scope.model = response.data)和index.cshtml中得到了我的模型我有我的列表目录,文件和驱动器......

怎么办??? 当我点击{{dir.Name}}时,我想重新加载app.js控制器(或getDirectoryBrowseModel(currentPath)),其值为currentPath的新值,例如:currentPath =“http://localhost:9298/api/browse?path=C:\”;。我希望在视图index.cshtml中看到新的所有目录和文件。 感谢!!!

4 个答案:

答案 0 :(得分:2)

您可以使用控制器中的$window,然后使用新网址重新加载页面

<div ng-repeat="dir in model.Directories">
    <a href="#" ng-click='updateUrl()'>{{dir.Name}}</a>
</div>


# in controller 
updateUrl = function() {
   $window.location.href = 'my/path'
}

答案 1 :(得分:0)

如果我理解你的问题,答案可能是使用angular-ui-router来改变状态https://github.com/angular-ui/ui-router

答案 2 :(得分:0)

var currentPath =“http://localhost:9298/api/browse”; - 它是某些服务上API的路径,我将它发送给我的控制器 function getDirectoryBrowseModel(path){             $ http.get(path,{responseType:“JSON”})             ... 我想在getDirectoryBrowseModel(path)中更改我的参数路径并在视图中刷新我的数据(index.cshtml) - 结果:视图中的新文件和目录

答案 3 :(得分:0)

user2954587的答案帮助我做出了正确的决定。

正确的决定是:将功能 $scope.clickToPath 添加到 app.js ,然后添加 的 ng-click='clickToPath("http://localhost:9298/api/browse?path=" + dir.Path)' index.html。

中的 a href

<强> app.js:

var currentPath = "http://localhost:9298/api/browse";

angular.module("browserApp", [])
.controller("BrowseController", function ($scope, $http) {
    function getDirectoryBrowseModel(path) {
        $http.get(path, { responseType: "JSON" })
        .then(function (response) {
            $scope.model = response.data
        });
    };
    getDirectoryBrowseModel(currentPath);

    $scope.clickToPath = function (path) {
        getDirectoryBrowseModel(path);
    }
});
index.cshtml:

中的

<div ng-controller="BrowseController">
 <span ng-repeat="drive in model.Drives">
{{drive.Name}}
</span>

<div>{{model.CurrentDrive.Name}}</div>

<div>{{model.CurrentDirectory.Path}}</div>

<div ng-repeat="dir in model.Directories">
    <a href="" id="{{dir.Name}}" ng-click='clickToPath("http://localhost:9298/api/browse?path=" + dir.Path)'>{{dir.Name}}</a>
</div>

<div ng-repeat="file in model.Files">
    {{file.Name}}
</div>

感谢所有