如何连接js和angularjs表达式?

时间:2015-02-16 07:22:43

标签: javascript angularjs

我使用onClick js函数重定向到另一个页面。但我想将查询字符串包含在给定的URL中。查询字符串由我从angularjs表达式获取的ID组成。我在组合这两个表达式时遇到了麻烦。

代码:

<div class="col-md-1 col-sm-1 padding10 left-border" onclick="window.location=RootURL+'pages/contest/contestdetail.ui.php?cID=83'">{{x.MemberPosition}}</div>

在上面的代码中,我想将cID = 83替换为类似cID = x.ContestID的内容。我正确地获得了{{x.ContestID}}的值。

2 个答案:

答案 0 :(得分:1)

我建议这样做

控制器:

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

app.constant('RootUrl', function() {
    return '/';
});

app.controller('YourCtrl', ['$scope', '$location', 'RootUrl' function($scope, $location, RootUrl) {
    $scope.gotoContest = function(id) {
        var url = RootUrl + 'pages/contest/contestdetail.ui.php?cID=' + id;
        $location.url(url);
    };
}]);

查看:

<div class="col-md-1 col-sm-1 padding10 left-border" ng-click="gotoContest(x.ContestID)"></div>

答案 1 :(得分:0)

Angular中,您应该使用$window代替window

  

对浏览器窗口对象的引用。窗口是全球性的   在JavaScript中可用,它会导致可测性问题,因为它是   全局变量。在角度我们总是通过它来引用它   $ window服务,因此可能会被覆盖,删除或嘲笑   测试

$location代替window.location

  

$ location服务解析浏览器地址栏中的URL(基于   在window.location上)并使URL可用于您的应用程序。   地址栏中URL的更改将反映到$ location中   服务和$ location的更改会反映到浏览器中   地址栏。

BTW,如果你想直接在视图中使用$location,请记住将$location绑定到控制器的范围,如

.controller('myController', function($scope, $location) {
  $scope.$location= $location;
});