2016-09-05 2 views
1

Я использую Angular Material в своем приложении. Внутри ng-repeat List у меня есть поля. Однако я хочу, чтобы пользователь мог добавлять часто используемые префиксы к тексту. Например, если он хочет набрать «часы: 5», он может нажать на кнопку, которая добавит «часы:» в поле ввода, поэтому ему просто нужно ввести 5.

Это то, что я имею прямо сейчас : HTML:
Изменение области действия ng-repeat в функции не обновляет область действия

<md-menu> 
           <md-button ng-click="$mdOpenMenu($event)" class="ps-button" aria-label="Open sample menu"> 
           + 
           </md-button> 
           <md-menu-content class="ps-selectcontainer"> 
           <md-menu-item ng-repeat="remark in remarks"><md-button class="ps-button" ng-click="addRemark(remark, this)">{{remark}}</md-button></md-menu-item> 
           </md-menu-content> 
          </md-menu> 
          </md-input-container> 

Входной Контейнер:

<md-input-container md-no-float class="md-block" > 
          <input ng-model='form_noteName' type="text" placeholder="Note" maxlength="255" required> 
          </md-input-container> 

И в Javascript:

$scope.addRemark = function (remark, repeatScope){ 

     if(repeatScope.form_noteName){ 
      repeatScope.form_noteName = remark + repeatScope.form_noteName; 
      $scope.stupidvariable = repeatScope.form_noteName; 
      return; 
     } 
     repeatScope.form_noteName = remark; 
     return; 
    }; 

Идея заключается в том, что, когда я нажимаю на элемент в мкр-меню открывает функцию addRemark проходит сферу, в addRemark он изменяет объем и поле ввода изменилось.
Но переменная form_noteName не изменяется, и я не знаю, что я делаю неправильно. Что я здесь делаю неправильно?

Редактировать .: Вот Plunker с подходом похож: http://plnkr.co/edit/1j3F64YyJPftxLf8QaZD?p=preview

Спасибо :)

+0

что такое 'repeatScope.form_noteName', ссылаясь на? нет никаких свойств, которые выглядят так, как здесь, в этом HTML. Кроме того, вы указываете поле ввода, но опять же, это не похоже, что в вашем коде есть поле ввода. во всяком случае, почему вы пытаетесь изменить структуру углового управления (область) вместо простого нажатия нового 'примечания' в массив' remarks'? – Claies

+0

Я отредактировал вопрос, t добавьте контейнер ввода, я попробую это с областью, потому что сейчас я не могу придумать какой-либо другой подход. Я хочу, чтобы пользователь мог добавлять текст в поле ввода – jakooob

+0

, это все еще не имеет смысла; вы нажимаете на элемент уже в массиве (повторяетесь), чтобы добавить текст этого элемента к модели другого входа, который не находится внутри повтора? что приводит меня дальше от правильного решения, так как ваш ввод не в том объеме, который вы пытаетесь изменить .... – Claies

ответ

0

Вы не можете иметь два нг щелчков. Вы должны поместить оба заявления вместе, разделенных точкой с запятой, например:

ng-click="addRemark(remark, this); testvariable='remark'" 

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

+0

Извините, забыл его удалить. Проблема в том, что я хочу, чтобы поле ввода было изменено, поэтому я передаю область, потому что form_noteName находится в области. Но он не обновляет область, поэтому поле ввода не изменяется: / – jakooob

Смежные вопросы