Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度-动态href-<;a>;vs控制器$window.location.href_Javascript_Angularjs - Fatal编程技术网

Javascript 角度-动态href-<;a>;vs控制器$window.location.href

Javascript 角度-动态href-<;a>;vs控制器$window.location.href,javascript,angularjs,Javascript,Angularjs,所以我有一个简单的页面,用户在输入中输入一个ID,然后点击“Go”按钮。我使用了一个onSubmit函数,它工作得很好。然后,我修改了一些角度代码,使之包含html5,从而能够从URL中删除/#/ search.template.html <div class="row"> <div class="small-12 column header-title"> <h2>{{ svm.title }}</h2><h5>

所以我有一个简单的页面,用户在输入中输入一个ID,然后点击“Go”按钮。我使用了一个onSubmit函数,它工作得很好。然后,我修改了一些角度代码,使之包含html5,从而能够从URL中删除
/#/

search.template.html

<div class="row">
    <div class="small-12 column header-title">
        <h2>{{ svm.title }}</h2><h5>BETA</h5>
    </div>
</div>

<form role="form" ng-submit="svm.onSubmit()">
<div class="row">

    <div class="small-12 small-centered columns">

        <div class="row collapse postfix-round">

            <div class="small-9 columns">
                <input ng-model="svm.formData.eventid" class="event-id" type="text" placeholder="Event ID" maxlength="7">
            </div>
            <div class="small-3 columns">
                <button type="submit" class="button postfix event-submit">Go</button>
            </div>
            <div role="alert" ng-show="svm.formData.formError" class="alert alert-danger event-id-error">{{ svm.formData.formError }}</div>

        </div>

    </div>

</div>
</form>
(function() {

    angular
    .module('monitorApp')
    .controller('searchCtrl', searchCtrl);

    searchCtrl.$inject = ['$window'];
    function searchCtrl($window) {
        var vm = this;
        vm.title = 'Monitor';

        vm.formData = {};
        vm.onSubmit = function() {
            vm.formError = '';
            if (!vm.formData.eventid) {
                vm.formData.formError = 'Please enter Event ID.';
                return false;
            } else {
                vm.formData.formError = '';
                $window.location.href = '/#event/' + vm.formData.eventid;
                return false;
            }
        };
    }

})();
因此,您可以在控制器中看到
$window.location.href='/event/'+vm.formData.eventid。现在,自从添加了“html5Mode(true)”之后,它似乎不仅被破坏了,而且如果它起作用,它会将我发送到服务器端路由,这是不对的。它应该使用角度布线


因此,我在这里试图找到如何不仅修复它,而且如何正确地利用角度路由(而不是服务器端路由)。谢谢你的帮助

改用
$location
服务:

function searchCtrl($location) {
    var vm = this;
    vm.title = 'Monitor';

    vm.formData = {};
    vm.onSubmit = function() {
        vm.formError = '';
        if (!vm.formData.eventid) {
            vm.formData.formError = 'Please enter Event ID.';
            return false;
        } else {
            vm.formData.formError = '';
            $location.path('/event/' + vm.formData.eventid);
            return false;
        }
    };
}

改用
$location
服务:

function searchCtrl($location) {
    var vm = this;
    vm.title = 'Monitor';

    vm.formData = {};
    vm.onSubmit = function() {
        vm.formError = '';
        if (!vm.formData.eventid) {
            vm.formData.formError = 'Please enter Event ID.';
            return false;
        } else {
            vm.formData.formError = '';
            $location.path('/event/' + vm.formData.eventid);
            return false;
        }
    };
}

改用服务;在我的“app.js”中使用的是HTML5模式。我使用的是
函数配置($routeProvider,$locationProvider){…
$locationProvider.html5Mode(true);
如果你是这个意思的话。我想更改URL,即
$location.path('/event/+vm.formData.eventid)
。一个更好的选择是使用路由器。您不需要从
ng submit
手柄返回任何东西。谢谢您的反馈!我现在已经可以使用了;但是既然您提到使用路由器,我就使用一个:
。当(“/event/:eventid”,{templateUrl:'bundles/app_client/event/event.view.html',controller:'eventCtrl',controllerAs:'vm',})
(很抱歉弄脏了)。请改用该服务;在我的“app.js”中使用的是HTML5模式awareIn,
函数配置($routeProvider,$locationProvider){…
$locationProvider.html5Mode(true);
如果你是这个意思的话。我想更改URL,即
$location.path('/event/+vm.formData.eventid)
。一个更好的选择是使用路由器。您不需要从
ng submit
手柄返回任何东西。谢谢您的反馈!我现在已经可以使用了;但是既然您提到使用路由器,我就使用一个:
。当(“/event/:eventid”,{templateUrl:'bundles/app_client/event/event.view.html',controller:'eventCtrl',controllerAs:'vm',})
(很抱歉弄脏了)。太棒了,工作得很好,学到了一些新东西!谢谢!太棒了,工作得很好,学到了一些新东西!谢谢!