无法使用ng-repeat生成链接

时间:2014-07-10 05:04:11

标签: javascript angularjs

以下是我的" app.js"的代码。 :

 var app = angular.module('WebUI',[]);

app.config(function($httpProvider){
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
});

app.config(function($locationProvider){
    $locationProvider.html5Mode(true);
});

这是我的控制器的代码:

    var Controller = function ($scope,$http)
    {
    $scope.thingsList=[];
    $http({method: 'GET', url: 'http://192.168.1.4/search'}).success(function(data)
    {
        results=data.results;
        angular.forEach(results,function(result)
        {
            $scope.thingsList.push(result.split('/')[1]);
        });     
    }).error(function(data){});
    }

以下是我的HTML页面的代码:

    <!DOCTYPE html>
<head>
    <title>All</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js" type="text/javascript"></script>
    <script src="app.js" type="text/javascript"></script>
    <script src="controller.js" type="text/javascript"></script>
</head>
<body>
    <a href="home.html">HOME</a>
    <div id='content' ng-app='WebUI' ng-controller='Controller'>
        <li ng-repeat="thing in thingsList">
        <a href="home.html">{{thing}}</a>
        </li>   
    </div>
</body>
</html>

这里的要点是我使用ng-repeat和我从controller.js获得的列表生成链接。但是,当我点击&#34; HOME&#34;它会重定向到主页,当我点击任何&#34;事情&#34;即生成的链接,然后它会抛出一个错误:

Error: Failed to execute 'pushState' on 'History': A history state object with URL 'file:///home/abc/home.html' cannot be created in a document with origin 'null'.

我尝试在线搜索此错误但找不到任何有用的内容。所以,如果有人知道问题出在哪里,请帮助:)

4 个答案:

答案 0 :(得分:2)

A history state object with URL 'file:///home/abc/home.html' cannot be created in a document with origin 'null'.

似乎你在文件网址上使用角度路由,没有服务器。

尝试使用服务器。

答案 1 :(得分:1)

实际上找到了我自己的问题的答案。 我在网上搜索过,发现生成太多"file:///"个链接会导致出现安全问题,导致他们不被允许这样做。

然后我尝试在服务器http://上托管并测试,然后更改了网址,但页面未刷新...所以再次出错。

然后我发现了

 `app.config(function($locationProvider){
    $locationProvider.html5Mode(true);
});`

这部分代码抛出了错误,因为我无法使用ng-route和其他东西。

但是位置需要此代码来解析URL中的get参数,因此我从What's the most concise way to read query parameters in AngularJS?获取了引用,并且我能够使用另一种方式传递URL中的get参数:url#/?target=bob和我现在能够解析参数。

问题解决了。 $location能够解析参数,我现在也可以访问之前给出错误的链接。

答案 2 :(得分:0)

尝试使用ng-href

https://docs.angularjs.org/api/ng/directive/ngHref

希望这有帮助。

答案 3 :(得分:0)

尝试使用窗口位置:

<li ng-repeat="thing in thingsList">
    <a ng-click="gotoHome()">{{thing}}</a>
</li>

在JS中,

$scope.gotoHome = function(){
  window.location="#/home";

                //Give your link above.
}

希望它有所帮助...