Проблема пространствоangularjs - обтекаемая форма (автоматическое) представление на основе грязного объема
У меня есть проблема, когда я направляющая форму на основе критериев, выполняюсь, вместо того, чтобы кнопка отправки формы.
Предположим, у меня есть 3 выпадающих списка, первые два сгруппированы, но нужно выбрать один из них, то есть я могу выбрать тот или другой, но я не могу оставить их пустыми, а третий - обязательным.
После этого страница автоматически извлекается в результатах.
Допустим, у меня есть флажки и еще несколько выпадающих списков. Любые будущие выборы в трех раскрывающихся списках, флажках и выпадающих списках автоматически фильтруют результаты.
Что я знаю
Теперь после прочтения угловых документаций, я проверял на $ загрязнены, $ нетронутые и операции на оба, как $ SetDirty и $ setPristine; однако, кажется, что это для FormController
Так что я предполагаю, что это полезно для всей области. Я не видел никаких наклонностей, которые я могу определить для выбранных областей.
То, что я до сих пор
Так в принципе, я надеялся, что я буду делать использование функции отслеживания за рамки, но я много об этом не знаю. Я создал один контроллер для своего приложения и одну область, так как это показалось мне самым легким. У меня есть 3-й партии плагинов, которые играют определенную роль в сферу, как:
$ scope.3rdpartyConfig = { prop1: [], prop2: GetData() }
Я не думаю, что что-то подобное был бы полезен при проверке, чтобы увидеть подачу формы, если я собираюсь проверить грязное состояние моей формы.
Тогда я подумал о старом, как я использовал, чтобы делать вещи, но «angularlizing» это:
так что я бы что-то вроде:
<input type="checkbox" ng-model="state.Checked" ng-change="checkIfWeCanSubmitThenSubmit()" id="ng-change-example1" />
Так что я бы имея ng- изменения и нг щелкают по всем моей HTML формы, поражающих этой функцию, когда функция будет выглядеть следующим образом псевдокода:
$scope.checkIfWeCanSubmitThenSubmit= function() {
var validated = false;
//check to see if dropdown1 or dropdown2 are selected
//check to see if dropdown3 is selected
// add more here per requirement
//if the above are true, then validated = true
if (validated)
{
//add dropdown4 and 5, and checkbox groups into filter
}
submit();
}
Но я думал, что это не угловой способ делать вещи, так как это наверняка не облегчается.
Я надеялся, что область действия предложит какой-то способ, где я могу проверить, не загрязнены ли какие-либо области видимости или нет, прежде чем я смогу отправить и извлечь данные, или если есть лучший способ, чем добавление этого функция для каждого элемента html; например, иметь какой-то трекер, который я могу проверить и посмотреть.
Это напоминает мне, что я не хочу иметь серию $ scope. $ Watch либо его просто так, что было бы слишком сложно работать с каждым фрагментом кода html, если не существует способа смотреть я не возражаю.
как (простите псевдокод):
$scope.$watch('dropdown1, dropdown2, dropdown4', function(dirty, pristine)
{
if (dirty)
{ blah blah blah }
});
Edit (2/28/2013):
Я пытался делать это так:
$scope.masterCriteria =
[
{ DropDown1: $scope.AppModel.Dropdown1},
{ DropDown2: $scope.AppModel.Dropdown2 },
{ DropDown3: $scope.AppModel.Dropdown3 },
{ Checkbox1: $scope.AppModel.Checkbox1 },
{ Checkbox2: $scope.AppModel.Checkbox2 }
];
$scope.$watch('masterCriteria', function (newVal) {
if (newVal) { logger.info("did I change?"); }
}, true);
обнаруженную Наблюдатель ничего, и любые значения, которые я изменил в область AppModel, не были подняты в $ watch. Стоит попробовать, все еще пытаясь понять это.
Интересно, так вы предлагаете мне сделать другую переменную области, le ts say .. readyToSubmit, и эта переменная проверяет данные других переменных сферы? Затем поставьте часы на readyToSubmit? Это на самом деле звучит довольно интересно. Это действительно похоже на прокси-шаблон для меня. – sksallaj
Я реализую его и посмотрю, как это работает. Благодарю. – sksallaj