2015-11-23 2 views
1

У меня есть этот небольшой фрагмент кода для установки root.lowWeight и root.highWeight на мой контроллер.Установите значение ng-модели на нажатие кнопки

<input type="number" placeholder="Enter Low Range..." class="form-control input-xs"> 
<input type="number" placeholder="Enter High Range..." class="form-control input-xs"> 
<button class="btn btn-primary" ng-click="assignWeights()">Select Model</button> 

Контроллер Модель:

//set the initial root scope to empty object 
$scope.root = {}; 
//define root weight 
$scope.root.lowWeight = 0; 
$scope.root.highWeight = 0; 

Я знаю, что я мог бы просто использовать ng-model="root.lowWeight", чтобы установить значение, но нг-модель срабатывает на элемент input события.

Как я могу либо:

а) Отправить входные значения в с помощью assignWeights(param1, param2)

б) Изменение нг-модель, чтобы вызвать вход на кнопку мыши (кажется Hacky, менее предпочтителен раствор)

Я также знаю, что могу использовать JS/jQuery для запуска события ввода и блокировки входного события, но это последнее усилие канавки, которое я не буду 99.9% делать.

+0

не уверен, что я правильно понимаю, но, возможно, вы ищете это: https://docs.angularjs.org/api/ng/directive/ngModelOptions –

+0

Я не уверен, что вы пытаетесь сделать, не можете ли вы просто использовать ng-model, тогда функция присваивает значения значениям модели? – Sam

+0

@NitsanBaleli, это близко, я мог бы сделать «ng-model-options =» {updateOn: 'blur'} ", и кнопка« будет действовать »как событие click, но я бы хотел, чтобы она была просто назначена кнопка. –

ответ

3

Решение используя отдельный объект Область применения: plunkr

HTML:

Low: <input type="text" name="lowRange" ng-model="inputData.lowWeight"> 
High: <input type="text" name="highRange" ng-model="inputData.highWeight"> 

Js:

$scope.assignWeights = function() { 
     $scope.lowWeight = $scope.inputData.lowWeight; 
     $scope.highWeight = $scope.inputData.highWeight 
    } 
0

В функции assignWeights вы можете использовать селектор для получения значений входов, а затем назначить значения переменной области видимости на основе этого. Просто назначьте имя для каждого ввода.

E.g.

<input type="number" placeholder="Enter Low Range..." class="form-control input-xs" name="lowRange"> 
<input type="number" placeholder="Enter High Range..." class="form-control input-xs" name="highRange"> 
<button class="btn btn-primary" ng-click="assignWeights()">Select Model</button> 

Контроллер:

$scope.assignWeights = function() { 
    $scope.root.lowWeight = document.querySelector('input[name="lowRange"]').value 
    $scope.root.highWeight = document.querySelect('input[name="highRange"]').value 
} 

Plunker: http://plnkr.co/edit/lm8GFA0CD0zWwgAMSLah?p=preview

+0

Хотя это может сработать, это не «угловой способ», который мне нужно достичь. Однако, спасибо. –