請在下面找到我的代碼示例。
守則模型(HTML代碼)
<select ng-model="drpDown1" ng-options="option.Title as option.Title for option in drpDown1Options">
<option value="">Select a value..</option>
</select>
<br/>
<select ng-model="drpDown1" ng-options="option.Title as option.Title for option in drpDown2Options">
<option value="">Select a value..</option>
</select>
對於
,並結合值在SharePoint 2013應用程序模型,我使用REST API上面的下拉列表中,我有很多這樣的dropdowns ..我必須使用相同的代碼爲每個下拉列表,除了會有一個更改listname,用於綁定值的變量。
所以我想用一個服務,並放置在下面的代碼中一種名爲myService.js
我使用下面的代碼。
this.bindDropdown = function (listname,dropDownOptionsVar,$rootScope) {
debugger;
var arr = [];
var listName = listname;
var scriptbase = hostweburl + "/_layouts/15/";
var requestUrl = appweburl + "/_api/SP.AppContextSite(@target)/Web/Lists/getbytitle('" + listName + "')/items?&@target='" + hostweburl + "'";
var executor = new SP.RequestExecutor(appweburl);
executor.executeAsync({
url: requestUrl,
method: "GET",
headers: { "Accept": "application/json;odata=verbose" },
success: function (data) {
var responseData = JSON.parse(data.body);
for (var i = 0; i < responseData.d.results.length; i++) {
var Title = responseData.d.results[i].Title;
var Id = responseData.d.results[i].Id;
arr1.push({
ID: Id,
Title: Title
});
}
$rootScope.dropDownOptionsVar = arr;
$scope.$apply();
},
error: function (data, errorCode, errorMessage) {
alert(errorMessage);
}
});
}
我打電話以上的myServicve.js從myController.js功能如下。
myController.js代碼
$rootScope.drpDown1Options ='';
$rootScope.drpDown2Options = '';
mySerivce.bindDropdown("List1",$rootScope.drpDown1Options,$rootScope);
mySerivce.bindDropdown("List2",$rootScope.drpDown2Options,$rootScope);
所以這裏的問題是它不工作的罰款。該參數$ rootScope.drpDown1Options沒有傳遞給函數在mySerivce.js
其工作正常只有當我更改以下語句時
$ rootScope.dropDownOptionsVar = arr;
成
$ rootScope.drpDown1Options = ARR;
$ rootScope.drpDown2Options = arr;分別在各個功能(通過綁定一個 dropdwon創建一個功能)
無厘頭被污染'在任何這$ rootScope'第一名。爲什麼數據不存儲在服務中? – charlietfl
'$ rootScope'是一個全局變量,應該避免。按照Charlietfl的說法,使用服務來存儲要在控制器之間移動的數據。 –