我遇到了角度路由提供商的问题。 在app.js route config中:
fmApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
$locationProvider.html5Mode(true);
$routeProvider.when('/', {
templateUrl: 'staticViews/home.html,
controller: 'fmController'
}).otherwise({ redirectTo: '/' })
})
在我的web.config中,我重写了url以将所有请求重定向到index.html:
</system.webServer>
<rewrite>
<rules>
<rule name="Rewrite Url to layout.html">
<match url=".*\.html|css/|img/|js/|data/|lib/|templates/|favicon.ico" negate="true" />
<action type="Rewrite" url="layout.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
在index.html中我提交了一个表单,我希望它使用$ http >>请求在服务器端执行
$scope.submit = function(){
$http({
method:'post',
url: '/api/test',
data: JSON.stringify(
angular.copy($scope.data)
)
})
}
我的问题是当我请求/ api / test它没有调用服务器端(api-controller和test-action)它调用layout.html(因为我在web.config中重写)。如果我没有rewrite url in web.config
并且使用$locationProvider.html5Mode(true);
会在我的网址中显示#:http://localhost/#!/ ....
答案 0 :(得分:0)
只是在黑暗中拍摄,但看起来你的API不包含在重写否定中。也许试试
<match url=".*\.html|api/|css/|img/|js/|data/|lib/|templates/|favicon.ico" negate="true" />
可能?