2014-01-10 7 views
0

У меня есть директива, в которой модель не обновляется, как я думаю, она должна быть. Вот мой HTML:Угловая модель не обновляется - Angular.js

 <div class="text-area-container"> 
     <textarea ng-model="chatText" ng-keyup="updateCount(chatText)"></textarea> 
     </div> 
    <input ng-disabled="disableCommentButton()" value="Comment" ng-click="addMessage(chatText)"/> 

Как вы можете видеть, у меня есть ng-model прикрепленного к <textarea>. Я не знаю, влияет ли это на что-либо, но у меня также есть привязанный к элементу ng-keyup, который берет модель и смотрит, сколько символов в ней. Последний фрагмент: у меня есть ng-disable на входе, который оценивается функцией. Вот мой link функция моей директивы:

link: function(scope) { 
    scope.chatText = ''; 

    scope.countRemaining = 500; 

    scope.updateCount = function(chatText) { 
     scope.chatText = chatText; 
     scope.countRemaining = scope.maxChatCount - chatText.length; 
    }; 

    scope.disableCommentButton = function() { 
     return _.isUndefined(scope.encounter) || _.isEmpty(scope.chatText); 
    }; 
    } 

Проблема заключается в том, что мой scope.chatText всегда определено в методе disableCommentButton. Я думал, что, присоединив модель к элементу в html, у меня будет доступ к нему в области видимости. Что мне здесь не хватает?

ответ

1

Try ...

scope.disableCommentButton = function() { 
    return _.isUndefined(this.encounter) || _.isEmpty(this.chatText); 
} 
+0

Почему это работает? 'scope.encounter' работал, но' scope.chatText' не работал. Я не знаю, имело ли значение 'scope.chatText' ранее в файле какое-либо отношение к нему. – jhamm

+0

с областью действия, являющейся глобальной переменной во время объявления вашей функции, она ссылалась на устаревшую область. ссылаясь на это внутри функции, ссылается на новый объект области видимости. – Jason

+0

Итак, сфера изменений меняется? Когда масштаб становится устаревшим? – jhamm

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