Javascript 无法通过路由在angularjs中的视图之间传递数据

Javascript 无法通过路由在angularjs中的视图之间传递数据,javascript,angularjs,asp.net-mvc-4,angular-ui-router,Javascript,Angularjs,Asp.net Mvc 4,Angular Ui Router,在我的angularjs应用程序中,我试图通过路由将数据从一个cshtml视图传递到另一个视图,但在details.cshtml中,我没有看到数据进入其中,尽管我可以看到URL中的变化 Index.cshtml(视图1) })) Details.cshtml(我看不到数据进入下面的范围) 我为此创建了一个plunker。我无法将数据从第1页发送到第2页 您的问题是,在单击href时控制器再次实例化,并且作用域正在重新创建&$scope.cid设置为未定义 您可以通过使用which来实现同样的目的

在我的angularjs应用程序中,我试图通过路由将数据从一个cshtml视图传递到另一个视图,但在details.cshtml中,我没有看到数据进入其中,尽管我可以看到URL中的变化

Index.cshtml(视图1)

}))

Details.cshtml(我看不到数据进入下面的范围)


我为此创建了一个plunker。我无法将数据从第1页发送到第2页

您的问题是,在单击href时控制器再次实例化,并且作用域正在重新创建&
$scope.cid
设置为未定义

您可以通过使用which来实现同样的目的,它将允许访问url包含的内容

在您的情况下,它将是
$routeParams.cid

代码

app.controller('CartController', function ($scope, $routeParams) {
  $scope.SendToCartPage = function(cartprd)
  {
    var len = cartprd.length - 1;
    //$scope.cid = cartprd[len];
  }
  $scope.cid = $routeParams.cid;
});
var app = angular.module('plunker', ['ngRoute']);
app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
    when('/Details/:cid', {
      templateUrl: 'page2.html',
      controller: 'CartController'
    }).when('/', {
      templateUrl: 'page1.html',
      controller: 'CartController'
    });
  }
]);
app.controller('CartController', function($scope, $routeParams) {
  $scope.myvar = $routeParams.cid; //this will asign value if `$routeParams` has value
  console.log($scope.myvar);
  $scope.Add = function(c) {
    $scope.myvar = c;
  }
});
更新

app.controller('CartController', function ($scope, $routeParams) {
  $scope.SendToCartPage = function(cartprd)
  {
    var len = cartprd.length - 1;
    //$scope.cid = cartprd[len];
  }
  $scope.cid = $routeParams.cid;
});
var app = angular.module('plunker', ['ngRoute']);
app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
    when('/Details/:cid', {
      templateUrl: 'page2.html',
      controller: 'CartController'
    }).when('/', {
      templateUrl: 'page1.html',
      controller: 'CartController'
    });
  }
]);
app.controller('CartController', function($scope, $routeParams) {
  $scope.myvar = $routeParams.cid; //this will asign value if `$routeParams` has value
  console.log($scope.myvar);
  $scope.Add = function(c) {
    $scope.myvar = c;
  }
});
您应该使用
$routeParams
服务从url获取数据

代码

app.controller('CartController', function ($scope, $routeParams) {
  $scope.SendToCartPage = function(cartprd)
  {
    var len = cartprd.length - 1;
    //$scope.cid = cartprd[len];
  }
  $scope.cid = $routeParams.cid;
});
var app = angular.module('plunker', ['ngRoute']);
app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
    when('/Details/:cid', {
      templateUrl: 'page2.html',
      controller: 'CartController'
    }).when('/', {
      templateUrl: 'page1.html',
      controller: 'CartController'
    });
  }
]);
app.controller('CartController', function($scope, $routeParams) {
  $scope.myvar = $routeParams.cid; //this will asign value if `$routeParams` has value
  console.log($scope.myvar);
  $scope.Add = function(c) {
    $scope.myvar = c;
  }
});

我在这一行中得到了“未定义的”$scope.cid=$routeParams.cid<代码>$scope.cid将在执行该行后可用我仍然无法将数据从一个视图1中的链接传递到控制器功能,然后再传递到视图2我为此创建了一个plunker。我无法将数据从第1页发送到第2页OP,这是为plunkr准备的,我要离开我的家,所以我一定会查看它。你能为你的第一次查看粘贴控制器代码吗?cid是第一个控制器中的作用域变量吗?我正在绑定第一个视图中的{{addprodtocart}}$scope.AddToCart=function(prd){$scope.cartprd=mycart.AddToCart(prd);var len=mycart.AddToCart(prd).length-1;//获取aray的最后一个元素以查找cartcount,如果(mycart.AddToCart(prd)[len]>0{$scope.addprodtocart=mycart.AddToCart(prd)[len]+“items”;}否则{$scope.addprodtocart=“无购物车项目!请添加”;}您是否将值绑定到{{cid}在您的第一个控制器中?我没有将cid绑定到我的第一个控制器。我在第二个控制器中创建了cid。如果您在视图1中使用{{cid},则必须将值绑定到与视图1对应的控制器中的cid。