2015-04-12 37 views
1

在我的angularjs應用程序中,我試圖通過路由傳遞數據從一個cshtml視圖到另一個視圖,但在details.cshtml中,我沒有看到數據進入它雖然我可以看到在URL無法通過路由在angularjs中的視圖之間傳遞數據

Index.cshtml(視圖1)的變化

<a href="/#/Details/{{ cid }}" ng-click="SendToCartPage(cartprd)">{{addprodtocart}} </a> 

Controller.js

app.controller('CartController', function ($scope) { 
$scope.SendToCartPage = function(cartprd) 
{ 
    var len = cartprd.length - 1; 
    $scope.cid = cartprd[len]; 
} 

});

Details.cshtml(我沒有看到進入下面的跨度的數據)

<div ng-controller="CartController"> 
    <span ng-model="cid">{{cid}}</span> 
</div> 

Myrouting

var app = angular.module("productmodule", ["ngRoute"]); 
app.config(['$routeProvider', 
    function ($routeProvider) { 
    $routeProvider. 

       when('/Details/:cid', { 
        templateUrl: '/Product/Details', 
        controller: 'CartController' 
       }); 
    }]); 

我創建了一個plunker這一點。我無法從第1頁的數據發送到第二頁 http://plnkr.co/edit/micM7vlslznEIZXP293Y?p=preview

+0

可以粘貼你的第一個視圖控制器代碼? cid是第一個控制器中的範圍變量嗎? – Yousuf

+0

我在第一個視圖中綁定了{{addprodtocart}} $ scope.AddToCart = function(prd){scope = {mycart.AddToCart(prd); $ scope.cartprd =如果(mycart.AddToCart(prd)[len]> 0){0} {0} scope.addprodtocart = 1; //獲取aray的最後一個元素以查找cartcount if(mycart.AddToCart(prd)[len]> 0){scope.addprodtocart = mycart.AddToCart(prd)[len] +「items」; } else { $ scope.addprodtocart =「No Cart items!Please add」; } } – user3501278

+0

您是否將值綁定到您的第一個控制器中的{{cid}}? – Yousuf

回答

1

您的問題是你的控制器再次被實例化,而在HREF點擊和範圍越來越重建& $scope.cid被設置爲未定義。

你可以實現通過使用$routeParams相同,這將給訪問什麼網址包含

你的情況,這將是$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; 
}); 

更新

您應該使用$routeParams服務從URL中獲取數據

代碼

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; 
    } 
}); 

Working Plunkr

+0

我在此行中獲取「undefined」$ scope.cid = $ routeParams.cid; – user3501278

+0

'$ scope.cid'將在執行此行後生效 –

+0

它適合您嗎? –

相關問題