我有一個用jQuery ajax和AngularJs加載的用戶控件(.ascx)有問題。由於遺留問題,我無法改變加載用戶控件的方式。問題是什麼?讓我解釋一下:
AngularJs的控制器在模型更改上有一個觀察者,但由於模型使用ajax調用得到,似乎控制器沒有「啓動」($ watch在用戶不運行時運行控制加載)由於異步問題。
我的第一個建議是,在ajax完成的過程中啓動一個事件,並在angularjs的控制器中訂閱此事件,但我不知道如何正確完成以及是否還有其他更好的選項。
有什麼建議嗎?提前致謝。
這裏是代碼:
- AJAX調用是典型的:
$.ajax("example.php") .done(function() { alert("success"); })
- 該用戶控制 「擁有」 的AngularJs的指令所需要的模式:
<span class="price-value"> <%= Model.Price %> <asp:PlaceHolder ID="PriceLinkPlaceHolder" runat="server"> <price-details-link-directive data-price-parameters="<%= Server.HtmlEncode(Model.SerializedPriceParameters) %>">
</asp:PlaceHolder> </span>
- 該用戶控制的HTML 「結果」:
<span class="price-value"> €449 <price-details-link-directive data-price-parameters="{ "priceDetailType": 2, "price": 449.0, "accommodationId": 38350, "departureDate": "01-01-0001", "transportType": 0, "duration": -1, "minOccupancy": -1, "maxOccupancy": -1, "roomType": "", "catalogBaseUrl": "" }"> </price-details-link-directive> </span>
- 這是angularjs的指令(priceDetailsDirective):
angularApp.directive( 'priceDetailsLinkDirective',函數(){ 回報{ 限制: 'E', 取代:真實, templateUrl :'/angular/prices/price_details_link.html', controller:'priceDetailsLinkController', scope:{ priceParameters:'@' } }; });