Здесь, в следующем коде, я должен изменить url при условии добавления, вычитания и умножения.
Я хочу добавить условие для добавления, вычитания и умножения в url, что-то вроде /:add?:subtract?:multiply
поэтому, если я нажимаю на функцию add()
только /:add have to work in url same if я click on
function only
sub()/: subtract 'должны работать в URL-адресе
состояние
angular.module("app");
.config(function ($stateProvider) {
$stateProvider.state('main', {
// here in url I have to apply conditions
'url': '/:add/:subtract/:multiply',
'abstract': true,
'templateUrl': '/main.html',
'controller': 'MainController'
});
});
контроллер
.controller('LandingController', function ($rootScope, $scope, $state) {
$scope.add = false;
$scope.subtract = false;
$scope.multiply = false;
$scope.add = function () {
$state.go("main.addition", {'add': true}, {'reload': true});
};
$scope.sub = function () {
$state.go("main.subtraction", {'subtract': true}, {'reload': true});
};
$scope.multiply = function () {
$state.go("main.multiplication", {'multiply': true}, {'reload': true});
};
})
============= Main controller =================
.controller('MainController', function ($scope, $stateParams) {
$scope.add = $stateParams.add;
$scope.subtract = $stateParams.subtract;
$scope.multiply = $stateParams.multiply;
});
Когда я нажимаю на метод add()
он должен перенаправлять на url '/true/addition..'
Когда я нажимаю на метод sub()
он должен перенаправлять на url '/true/subtraction..'
Когда я нажимаю на метод multiply()
он должен перенаправлять на url '/true/multiplication..'
Но теперь моя проблема заключается в перенаправлении на url '/true///addition'
или '//true//subtraction'
или '///true/multiplication'
котором отображается правая страница
но когда я обновляю страницу, URL-адрес этого времени будет изменен и сбой приложения.
main.html
<div ng-if="add" > Addition </div>
<div ng-if="subtract" > Subtraction </div>
<div ng-if="multiply" > Multiplication </div>
landing.html
<a href="#" ng-click="add()"> Addition </a>
<a href="#" ng-click="sub()"> Subtraction </a>
<a href="#" ng-click="multiply()"> Multiplication </a>
Здесь add, subtract, multiply - это логические переменные, которые получаются из $state.go
.
Я думаю, что вы пытаетесь добиться этого:
$stateProvider
.state('main', {
'url': '/',
'abstract': true,
'templateUrl': '/main.html',
'controller': 'MainController'
})
.state('main.addition',{
url: ':a/addition'
})
.state('main.subtraction',{
url: ':b/subtraction'
})
.state('main.multiplication',{
url: ':c/multiplication'
});
main.html
<div ui-view=""></div>
landing.html
<a ui-sref="main.addition({a:true})"> Addition </a>
<a ui-sref="main.subtraction({b:true})"> Subtraction </a>
<a ui-sref="main.multiplication({c:true})"> Multiplication </a>
Трудно сказать, для чего вам нужны эти параметры: a, b, c.
Здесь работает jsfiddle
- http://jsfiddle.net/irhabi/gsrg9cok/
Я думаю, это должно выглядеть так: http://jsfiddle.net/irhabi/enurj8uu/
main.html
и именно поэтому я использую эти переменные в stateParams
. Я обновил переменные a, b, c в своем вопросе
Я бы предложил указать URL отдельно. потому что, глядя на количество раз, когда он принимает '/', похоже, что он проверяет весь URL-адрес, и слово, которое соответствует отображению, но оно не пропускает, '/'
"add", "sub", "multiply"
и просто использовал стратегическую логику, чтобы выбрать, какой параметр установить в области. Это будет выглядеть лучше в URL