【问题标题】:angular routing, current route buttons/functions unresponsive after directing from default route角度路由,从默认路由定向后当前路由按钮/功能无响应
【发布时间】:2017-09-12 20:51:23
【问题描述】:

简而言之,它是一个单页应用程序,因此 index.php 首先加载默认模板 URL 和控制器。当我单击一个按钮并移动到一个新路由(新的 templateUrl 和控制器)时,该页面中的任何内容都不起作用,单击取消按钮不会弹出警报或将我重定向到主页。

基本上 主页:列出销售页面(url#1 controller#1)->点击添加销售->添加销售页面(url#2 controller2)>按钮不起作用

路由

var app = angular.module("phpApp", ["ngRoute"]);
app.config(['$routeProvider','$locationProvider',function ($routeProvider, $locationProvider) {
$routeProvider.when("/",{
    templateUrl:"view-list.php", controller: "listController"
})
    .when("/add", {
    templateUrl:"view-details.php", controller:"addController"
})
.when("/:index",{
    templateUrl:"view-details.php", controller:"editController"
})
.otherwise({
    redirectTo:"/"
});
}]);

默认模板URL(假设主索引页面只有一个“添加销售”按钮)

<div class="form-group">
    <button data-ng-click="addSales()" class="btn btn-primary">Add Sales</button>
</div>

默认控制器

app.controller('listController', ['$scope', '$location','$routeParams', 'salesService', function($scope, $location, $routeParams, salesService){
$scope.data = salesService.getSales();

$scope.addSales = function(){
    $location.path('/add');
};

$scope.editSales = function(x)
{
    $location.path("/" + x);
};

$scope.delSales = function(x)
{
    if (confirm('Are you sure to delete?'))
    {
         alert("deleted item asdasd");
        //var index = $scope.bdays.indexOf(item);
        //$scope.bdays.splice(index, 1);
    }
    $location.path("/");
};


}]);

Directed TemplateURL(添加销售页面) - 所以当我点击保存或取消时,它们都不会将我重定向回主页

<div class="form-group">
    <button ng-click="save()" class="btn btn-primary">Save</button>
    <button ng-click="cancel()" class="btn btn-primary">Cancel</button>
</div>

添加销售总监

app.controller('addController', ['$scope', '$location', '$routeParams', 'salesService',
                              function($scope, $location, $routeParams, salesService){
$scope.save = function()
{
    salesService.addSales({id: $scope.Item.id, item: $scope.Item.item, name: $scope.Item.name, date: $scope.Item.date, price: $scope.Item.price});
    $location.path('/');
};

$scope.cancel = function()
{

    alert("deleted item asdasd");
    $scope.$apply(function() {
        $location.path('/');
    });
};
}]);

【问题讨论】:

  • 检查您的控制台是否有错误。如果没有错误,请发布重现问题的 plunkr。不,为什么不直接使用&lt;a href="..."&gt; 作为链接?
  • plunker 做得最糟糕,因为一切都没有显示(?),不确定这是否是我的错误(plnkr.co/edit/AToS79LLSVfo5li65awo?p=preview),检查了三次。如果我使用 就不需要路由了。
  • 一旦你删除了所有无用的 jquery 和 bootstrap JS,一旦你为 angular.js 放置了正确的位置,一旦你使用未定义的 dateTimeController 删除了该部分,一旦你删除了无用的 $scope.$来自 cancel() 函数的 apply(),一切正常:plnkr.co/edit/Lthey4J7n0DXUVWaeAkE?p=preview。带有 href 的链接指向一个 URL,该 URL 映射到一个路由。当单击带有指向 URL 的 href 的链接时,角度将位置设置为该 url,路由器检测到位置更改,导航到映射到该 url 的路由。
  • @JBNizet 哇,现在可以用了,谢谢!!希望我能支持你的回答

标签: angularjs


【解决方案1】:

尝试将$locationProvider 上的html5mode 属性设置为true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多