2014-11-18 3 views
2

Мы в настоящее время переход на угловые 1.3 при тестировании функциональности bindOnce я столкнулся с этой проблемой: точный кусок коды ...Угловое BindOnce, что может помешать работе?

Controller Код:

this.value = 'value'; 
this.clickTest = function() { 
    this.value = 'changed'; 
}; 

HTML:

//cm is the ControllerAs variable defined in the route 
<p> {{ ::cm.value}} </p> 
<button ng-click="cm.clickTest()"> CLICK </button> 

... работает нормально в контроллере, но не в другом - в рабочем контроллере событие click будет не изменить значение, в то время как в нерабочем состоянии оно изменит v alue - (код точно такой же как в обоих контроллерах, так и в изменениях маршрута, и, видимо, что-то еще меняется). Оба контроллера были опустошены, чтобы иметь лучшую тестовую среду.

Теперь, что я хотел бы знать: есть ли что-то, что может помешать функциям bindOnce работать должным образом? Есть ли что-то, что вынуждает угловой код не удалять наблюдателя или включать его снова, несмотря на правильный синтаксис (: :) использовался в представлении?

Я работаю с угловым 1.3.2

+0

Вы должны опубликовать фрагмент кода HTML, а также. – pquest

+0

Кроме того, что вы имеете в виду, не работая? – pquest

+0

Добавить HTML и объяснение. – Abaco

ответ

3

Я думаю, что значение не меняется после щелчка, bcoz контекста this изменяются для clickTest функции

Попробуйте код ниже, надеюсь, что он работает

var vm = this; 
vm.value = 'value'; 
vm.clickTest = function() { 
    vm.value = 'changed'; 
}; 
return vm; 

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

+0

Нет, это не причина, контекст этого в этой ситуации не меняется. Это роль bindOnce в Angular 1.3, и это также тот аспект, который терпит неудачу. – Abaco

1

AngularJS 1.3 в привязывать однократное не работает, когда расширение Batarang включена