AngularJS アプリケーションで奇妙なことが起こっています。オブジェクトの配列にバインドされたアンカータグのリストを持つビューがあります(ng-repeat
リストをレンダリングするために使用しています)。各アンカー タグにはng-click
、コントローラーのメソッドへのバインドがあります。方法は次のとおりです。
$scope.onSiteSelected = function ($event, site) {
$event.preventDefault();
$.ajax({
url: '/Site/GetSiteMap/' + site.Id,
success: function (response) {
if (response && response.length > 0) {
menuManager.setSiteMap($scope.$root.menu, response[0]);
var url = response[0].Children[0].Settings.Url;
$location.path(url);
}
}
});
}
varはurl
毎回正しい値に初期化されています。しかし、アンカータグを初めて$location.path(url)
クリックすると何もせず、もう一度クリックするとターゲットの URL に移動します。
アップデート:
わかりました$http
、次のようにサービスを使用して動作させました:
$scope.onSiteSelected = function ($event, site) {
$event.preventDefault();
var address = '/Site/GetSiteMap/' + site.Id;
$http.get(address)
.success(function (response) {
if (response && response.length > 0) {
menuManager.setSiteMap($scope.$root.menu, response[0]);
var url = response[0].Children[2].Settings.Url;
$location.path(url);
}
});
}
またはを使用した場合、本当に違いがあります$,ajax
か$http
? 2つは同じ意味で使えると思ったのですが…?