1

プロジェクトでAngularJSを使用しており、ナビゲーションに含まれているルーティングを使用しようとしています。IE7と8で問題が発生しています。いずれかのページに移動すると、コントローラーが起動し、データが読み込まれます。(すべてのデータバインドフィールドが入力された状態でパーシャルが返されることがわかります。)問題は、パーシャルがng-viewに追加/追加されないことです。AngularJS v1.0.1を使い始めましたが、使用しているバージョンのバグである可能性があると考えて、1.0.2に切り替えました。どんな助けでも大歓迎です。

これは私がルーティングに使用しているコードです:

myApp.config(['$routeProvider', function($routeProvider, $location){
$routeProvider.when('/business/:query', {   templateUrl: 'partials/detail.html', controller: 'details'});
$routeProvider.when('', { templateUrl: 'partials/splash.html'});
$routeProvider.when('/results/:query', {    templateUrl: 'partials/list.html', controller: 'listController'});
$routeProvider.otherwise({redirectTo: ''});

}]);

これはコントローラーのコードです。

myApp.controller('listController', listController = function($scope, $routeParams, $http, $cookies){

var query = $routeParams.query;
var myQuery =  query.indexOf('-') > 0 ? $scope.removeDashes(query):query;

switch($scope.selected)
{
case 'name':
    $http({ method: 'jsonp',
       //URL to test service
        url: 'http://localhost:56119/PropertyAppraiser/PABusinessSearchService.asmx/searchBusinesses?NAME=' + myQuery + '&callback=JSON_CALLBACK',
        header: { 'Content-Type': 'application/json; charset=utf-8' }

    })
    .success(function(data){
        $scope.businesses = data;
    });
    break;

case 'address':
    $http({method:'jsonp',
    //URL to test service
    url:'http://localhost:56119/PropertyAppraiser/PABusinessSearchService.asmx/searchAddress?myAddress=' + myQuery + '&callback=JSON_CALLBACK',
    header:{'Content-Type':'application/json; charset=utf-8'}
    })
    .success(function(data){
        $scope.businesses = data;

    })
    .error(function(data){

        return false;
    })
    break;
}
})


myApp.controller('details', details  = function($scope, $http, $routeParams){

var query = $routeParams.query;
var myQuery =  query.indexOf('-') > 0 ? $scope.removeDashes(query):query;

$http({ method: 'jsonp',
    //URL to test service
    url: 'http://localhost:56119/PropertyAppraiser/PABusinessSearchService.asmx/searchBusinesses?FOLIO=' + myQuery + '&callback=JSON_CALLBACK',
    header: { 'Content-Type': 'application/json; charset=utf-8' }

})
.success(function(data){
    $scope.businesses = data;           
});
});

これはアプリのHTMLです。

<div id="ng-app" class="ng-app:myApp ng-cloak" ng-cloak ng-app="myApp"  ng-controller="businessSearchCtrl">

<div id="infoContainer" >
<h1 id="mainHeader">Personal Property Account Information</h1>

<div id="searchContainer">
<h3 style="background: none; margin: 0; padding: 0">Search By Folio, Business Name, or Address:</h3>

<select ng-model="chosen" ng-options="i.id as i.name for i in items">
    <option value=""></option>
</select>

<input id="searchBox" type="text" placeholder="Enter Business Name or Folio Number" ng-model="query" />
<input id="submit" type="button" ng:click="search()" value="Search"/>
</div>


<div class="ng-view">

</div>

</div>
<div style="clear:both; height:0">&nbsp;</div>
</div>

<div style="clear:both; height:0">&nbsp;</div>
</div>

編集:IE9を含めてテストした他のすべてのブラウザで動作します。エラーメッセージも表示されません。

4

1 に答える 1

2

わかりました、他の睡眠不足の父親が同じタイプの間違いを犯している場合に備えて、この回答を投稿しています. インクルードされるパーシャルの html には、何らかの要素を含む必要があります。どうやら、IE 7 および 8 は、ブロック レベルの要素内に完全に含まれていない限り、html をページに追加できません。

多分私はこれをすでに知っていて、単に忘れていました。もしかしたら、今これを読んでいるあなたは知っているかもしれません。これが、Q&A サイトで実名を使用しない理由なのかもしれません。私が確かに知っていることは、フロントエンド開発は残酷で厳しい愛人になる可能性があるということです...

于 2012-10-11T13:41:43.623 に答える