it-roy-ru.com

Передача параметра Angularjs на страницу с помощью ng-клика

У меня есть следующие три кнопки в верхней части моей страницы с полем ввода под ним.

<div>
  <form>
          <div>
              Enter Show Name<input type="text" ng-model="showName" />
          </div>
      </form>
</div>
<div>
<button ng-click="href="/api/renameShow"">Rename Show</button>
<button ng-click="href="/api/updateShow"">Update  Show</button>
<button ng-click="href="/api/checkShow"">Check   Show</button>
</div>

Мой код модуля с маршрутами

    var showApp = angular.module("showApp", ["ngRoute", "ngResource", "ui"]).
    config(function ($routeProvider, $locationProvider) {
        $routeProvider.
            when('/',
            {
                controller: '',
                templateUrl: 'main.html'
            }).
            when('/api/renameShow', { controller: 'renameShowCtrl', templateUrl:     '/templates/renameShow.html' }).
            when('/api/updateShow', { controller: 'updateShowCtrl', templateUrl:     '/templates/updateShow.html' }).
when('/api/checkShow', { controller: 'checkShowCtrl', templateUrl: '/templates/checkShow.html' });

По сути, я пытаюсь сделать так, чтобы при нажатии на одну из кнопок ng-click вызывал соответствующую страницу, передавая ей параметр "showName". Пожалуйста, дайте мне знать, как это исправить. Спасибо

8
J. Davidson

Прежде всего, вам нужно указать контроллерам назначения (странице, на которую вы ссылаетесь) ожидать и принять параметр, когда мы перейдем на эту страницу:

$routeProvider.when('/api/renameShow/:showName?', { 
  controller: 'renameShowCtrl', 
  templateUrl:     '/templates/renameShow.html' 
})

Знак вопроса после параметра означает, что это необязательный параметр. Вы можете добиться того же с помощью тегов привязки:

<a href="#/view2/mike">Go to view 2</a>

Если вы настаиваете на использовании кнопок, напишите пользовательскую функцию, перехватывающую ng-щелчок кнопки, и затем передайте любой параметр, который вы хотите, как этот, из текущего контроллера:

<button ng-click="customNavigate('Mike')">Rename Show</button>

И в контроллере: 

    $scope.customNavigate=function(msg){
       $location.path("/view2"+msg)
    }

а затем в контроллере назначения:

app.controller("renameShowCtrl",function($scope,$routeParams){
   $scope.showName=$routeParams.showName
});
14
Mohammad Sepahvand

Скажем, нам нужен psoid в sodtl.htm:

В HTML - so.html:

<tr ng-controller="SoController" ng-repeat="x in sos">
            <td>{{x.date}}</td>
            <td><a href="#/sodtl/{{x.soid}}">Dtl</a></td>
</tr>

В AngularJs - app.js - Конфиг:

 app.config(function ($routeProvider)
    {    
        $routeProvider.
        when ('/sodtl/:psoid?',
                {
                    templateUrl : 'pages/sodtl.html',
                    controller  : 'SoDtlController'
                }
              )
    });

В контроллере - app.js:

app.controller('SoDtlController', function ($scope, $http, $location, $routeParams) {
    $scope.message = " $routeParams.psoid = " + $routeParams.psoid;
});

Таким образом, вы можете использовать psoid для отображения данных на странице sodtl.html.

0
Kaps