2016-04-01 2 views
1

Новое для углового, поэтому я надеюсь, что задаю этот вопрос правильно.Обновить текущее значение модели при использовании привязок

(Угловое 1.5 и с использованием компонентов)

Parent.html:

<names on-refresh-names='$ctrl.reloadNames'></names> 

Parent.js

this.reloadNames = function() { 
... 
} 

Names.html

<input ng-model="searchNameValue"> 
<button ng-click='$ctrl.onRefreshNames()'></button> 

Names.js ...

component.bindings = { onRefreshNames: '&' } 

Я хочу, чтобы сделать вход с поисковой строкой будет очищено (searchNameValue = '';), когда onRefreshNames выполняется. Но он выполняется в родительском, а searchNameValue - в дочернем.

Как я могу это сделать?

ответ

0

Вы можете объединить заявления в одно выражение:

<button ng-click="$ctrl.onRefreshNames(); searchNameValue = '';"></button> 

Но в данном случае это имеет смысл, чтобы переместить их обоих в функцию в контроллере компонента:

<input ng-model="$ctrl.searchNameValue"> 
<button ng-click="$ctrl.onRefresh()"></button> 

где контроллер

this.onRefresh = function() { 
    this.onRefreshNames() 
    this.searchNameValue = '' 
} 

В любом случае обратите внимание, что в исходном виде это должно быть

<names on-refresh-names="$ctrl.reloadNames()"></names> 
+0

Первая часть - самый простой способ, который я искал. Также я попробовал вторую часть, используя функцию в моем контроллере имен - это тоже было полезно. Но я не смог очистить вход this.searchNameValue = '', вместо этого мне пришлось использовать $ scope.searchNameValue. Так ли это должно работать, или я что-то пропустил в вашем ответе? –

+0

Лучше не использовать '$ scope', если остальные методы привязаны к экземпляру контроллера (это). Для работы 'this.searchNameValue = ''' убедитесь, что у вас есть 'ng-model = '$ ctrl.searchNameValue" в HTML (обратите внимание на $ ctrl part). – dfsq

+0

Действительно. Получил работу без ограничений, поскольку вы предложили использовать второй подход. Это решает. Спасибо. –

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