2013-12-16 36 views
0

我正在使用Angular-JS和.net web api。 該程序將顯示「配置文件」列表,當用戶點擊任何它將導航到細節。在Angular JS中綁定的問題

列表部分工作正常,但在細節上不顯示任何數據 的代碼如下:

var profileModule = angular.module('profileModule', ['ngResource', 'ngRoute']); 

profileModule.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when('/profile', { 
       controller: 'profileController', 
       templateUrl: 'Partials/profileList.html' 
     }) 
     .when('/profile/:profileId', { 
      templateUrl: 'Partials/profileDetail.html', 
      controller: 'profileDetailController' 
     }) 
     .otherwise({ redirectTo: '/profile' }); 


}]); 

profileModule.controller('profileController', function($scope, profileFactory) { 
    $scope.profiles = []; 

    function init() { 
     $scope.profiles = profileFactory.query(); 
    } 

    init(); 
}); 

profileModule.controller('profileDetailController', function ($scope, $routeParams, profileFactory) { 
    $scope.profile = {}; 

    function init() { 
     $scope.profile = profileFactory.get({ Id: $routeParams.profileId }); 

     } 

    init(); 
}); 


profileModule.service('profileFactory', function ($resource) { 
    return $resource("api/profiles/:Id"); 
}); 

和詳細頁面profileDetail.html看起來像這樣

<div> 
    <h2>profile Details</h2> 
    <p> 
     Name: <br/> 
     {{profile.Name}} 
    </p> 
    {{doit}} 
</div> 

列表頁面profileList.html看起來像這樣

<div class="container"> 
    <h1>Profiles by sort order</h1> 
    <span data-ng-repeat="profile in profiles | orderBy: 'Sequence'"> 
     <a data-ng-href="#/profile/{{profile.Id}}"> 
      {{profile.Name}} 
     </a><br/> 
    </span> 
</div> 

l北京時間部分工作正常,當我點擊鏈接,我可以看到其餘調用Web API如下

/型材/ 4

,我可以看到正在恢復回來

的JSON

但詳細信息頁面上完全沒有綁定

+1

你確定這個綁定在詳細頁面中是好的嗎?不應該是profile.Name不是cprofile.Name –

+0

是的,並且對此抱歉。 我正在玩耍,看看爲什麼綁定不會發生,並且我添加了c,並且在我寫這個問題時忘了取消它。但實際上這個名字是正確的,但我仍然無法得到具有約束力的工作。 謝謝,我會解決它在我的問題。 –

回答

0

當您對資源的GET請求只返回一個對象時,可以使用$ resource服務的get()函數。檢查你的瀏覽器的開發者工具,你可能會在控制檯看到一個錯誤:「資源配置錯誤,期望的響應包含一個對象但有一個數組」。

爲了使您的代碼的工作,修改你的init()函數,而不是使用GET查詢:

function init() { 
    $scope.profile = profileFactory.query({ Id: $routeParams.profileId }); 
} 

據我所知,這應該解決您的問題。如果沒有,請在這裏發表評論。

+0

我很忙。 我剛測試過它,但沒有奏效。 實際上,當我使用get方法時,我可以看到正在使用此url http:// localhost/myapp/api/profiles/4正確調用url,其中4是他選擇的ID。 當我把查詢它給了我你提到的錯誤是「預期的響應包含一個對象,但有一個數組」 –

+0

嘗試設置選項{'get':isArray:true}到資源配置。我現在有點忙,稍後會嘗試並更新答案。 –