У меня есть модальное окно для создания нового объекта
Как вы можете видеть там три формы: 1) простой ввод для создания "Имя";2) Раскрывающийся список «Типы»;3) выпадающий список с «идентификаторами»;Мне нужно получить данные с типами и идентификаторами из БД, и, как я вижу в браузере и журналах, эта часть процесса идет хорошо, но когда я заполняю все формы и пытаюсь их отправить, всегда появляется ошибка,это происходит потому, что на сервере в переменные «Типы» и «Идентификаторы» записываются данные из переменной «Имя», короткими словами он отправляет данные из ввода во все переменные.Это главный вопрос - зачем записывать данные из входных данных во все переменные?Это HTML:
<tr>
<td class="collapsing">
<label>{{localization.common[locale].name}}</label>
</td>
<td>
<input type="text" placeholder="" ng-model="Name">
</td>
</tr>
<tr ng-controller="VirtualConnectorAddCtrl">
<td class="collapsing">
<label>{{localization.common[locale].VTypeID}}</label>
</td>
<td>
<select class="ui dropdown VTypeID" ng-model="VTypeID">
<option ng-repeat="item in virtualType" value= "'{{item.Id}}'">{{item.Name}}</option>
</select>
</td>
</tr>
<tr ng-controller="VirtualConnectorAddCtrl">
<td class="collapsing">
<label>{{localization.common[locale].account}}</label>
</td>
<td>
<select class="ui dropdown RunAsId" ng-model="RunAsId">
<option ng-repeat="list in runAccount" value= "'{{list.RunAsAccountId}}'">{{list.RunAsAccountName}}</option>
</select>
</td>
....
<div class="ui button blue" ng-click="createData(modal_id, Name, VTypeID, RunAsId)">{{localization.common[locale].add}}</div>
У меня была такая же проблема с созданием «Учетной записи» (вы можете увидеть на изображении в левом боковом меню: VirtualTypes, Account, VirtualConnectors), и там проблема была около $http params в контроллере
$scope.createData = function (obj, data, extra) {
....
if ($scope.dictFilter == 'accounts') {
$http({
method: 'GET',
url: appID + '/Insert_Methods.asmx/Insert_RunAsAccount',
params: { name: data, pasword: data}
}).then(function successCallback(response) {
Modals.close(obj)
getData();
}, function errorCallback(response) {
});
return;
} ....
Когда я заменил «пароль: данные» на «пароль: дополнительные», проблема была решена, но с «VirtualConnectors» я не смог найти способ сделать это (все созданиепроцессы инициализируются с помощью функции «createData», и я пытаюсь добавить новый блок к этой функции)
if ($scope.dictFilter == 'virtualConnectors') {
$http({
method: 'GET',
url: appID + '/Insert_Methods.asmx/Insert_VirtualConnector',
params: {name: data, VtypeID: data, RunAsID:data }
}).then(function successCallback(response) {
Modals.close(obj)
getData();
}, function errorCallback(response) {
console.log("function createData doesn't callback");
});
return;
}
возможно, это касается параметров, в данном случае их три (на самом деле 4, включая obj) модальные"), но функция принимает только 2 аргумента (фактически 3, включая" obj "), функция работает для других случаев, а в других случаях params не всегда соответствуют аргументам ... В интернете не так много информации о" params ",поэтому я не могу понять логику связывания HTML и контроллера здесь.Очевидно, что в html-файле функции CreateData принимают "modal_id", "Name", "VtypeID" и "RunAsId" в качестве аргументов, поэтому в контроллере эта функция должна быть установлена с аргументами, которые могут принимать такие типы данных (obj, string, string, строка), но есть (obj, data, extra), я пытался изменить аргументы функции в контроллере: $scope.createData = function (obj, data, extra, string) {...
, и это не помогает ... Я думаю, что я должен написать другую функцию для этого случая,но какие аргументы я должен привести?И еще одна вещь: правильно ли использовать форму с параметрами, созданными с помощью ng-repeat, для такого случая (когда мне нужно отправить строку, которая является свойством объекта)?