2014-09-23 71 views
0

僅供參考 - 我們使用Angular作爲數據綁定功能。我們並沒有試圖將我們的應用程序開發爲SPA,所以我不認爲$ routeprovider是一個選項(如果我錯了,請告訴我)。所以,這是問題所在。 當我使用ng-include將左側導航作爲部分加載時,該部分加載正常,但下拉不起作用,因爲父級範圍中的範圍數據對部分頁面不可用,因爲ng-include創建了子範圍。所以,當我嘗試使用ng-include從部分訪問它時,我需要作爲url參數傳遞的url id的數組是'undefined'。什麼是最好的方式來實現這個工作?AngularJS ng-include左側導航

這是下拉菜單,它是導航的一部分。

<select class="form-control-menu input-xs" ng-model="selectprogram" ng-change="onChange()" ng-disabled="isLoading" 
ng-options="obj.name for obj in programList"> 
<option value="">PROGRAMS</option> 
</select> 

這是調用的onchange事件。

$scope.onChange = function() { 

     window.location.href = '../View/programs.html?reportid=' + $scope.reportID + '&programid=' + $scope.selectprogram.id; 

    } 

解決此問題的最佳方法是什麼?

+1

採用了棱角分明只是它的數據結合能力類似於使用汽車剛玩的MP3。 – Shomz 2014-09-23 20:27:43

+0

你做你的老闆想要的。對?但是如何對一些建設性的投入Shomz。謝謝 – Keith 2014-09-23 20:38:59

回答

0

你有兩個選擇:

  • 在共享屬性父範圍內使用的對象。由於作用域是原型繼承的,所以更新將會持續。原始類型不適用。

  • 定義父範圍上的onChange函數(由於原型繼承也會持續)。

  • 使用子範圍中的$ scope。$ parent。不推薦/不好的做法。

更深入的討論,其相關:

AngularJS - losing scope when using ng-include

+0

onchange確實發生在父母身上。當我使用ng-include注入我的部分內容時,則強制創建我無權訪問的子範圍。子作用域屬於ng-include指令。正確?我沒有可引用父級的自定義指令。 – Keith 2014-09-23 20:49:51

+0

你可以發表小提琴嗎?樂於幫助,但我不清楚您的範圍如何分享。您無法從父作用域訪問子作用域,因此無法使用。所以你要麼通過原型繼承來共享一個對象,要麼你可以使用$ scope。$ broadcast來激發一個事件來共享數據。 – Daniel 2014-09-23 20:58:24