2015-03-31 3 views
2

У меня есть директива с изолированной областью. В области видимости есть свойство - переданное как строка ('@').Директива AngularJS с изолированной областью - значения атрибутов по умолчанию

Этот атрибут не является обязательным - я хочу установить значение по умолчанию для свойства, если в атрибутах директивы не передано никакого значения. Поэтому я написал следующую строку кода:

scope.someProperty = scope.someProperty || "New Value"; 

Но это не работает, как я ожидал ... scope.someProperty остается пустым.

Я немного разобрался и понимаю, что односторонняя привязка к изолированному свойству scope (@) означает, что родительское значение может быть прочитано, но не записано. я хочу установить локальное значение свойства директивы и не изменять родительский элемент.

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

См. Пример в этом plunker.

+0

Попробуйте scope.someProperty = "New Value"; и переопределять его, когда это необходимо. Поскольку угловой является двухсторонним связыванием scope.someProperty = scope.someProperty || «Новая ценность»; приведет к ненужным путаницам. – sms

+0

Изолирующая область предотвращает ненужные путаницы. Угловое - это не всегда двусторонняя привязка данных - @ для одного способа связывания –

ответ

4

Взгляните на эту plnkr

scope.someProperty = scope.someProperty || "New Value";

Это задание будет устанавливать значение someProperty для New Value. Но после начального цикла дайджеста из-за оператора scope: {someProperty: '@'} угловое обновление значения someProperty соответствует соответствующему значению атрибута, который пуст.

Попробуйте установить это значение по умолчанию.

attrs.$observe('someProperty', function (nv, ov) { 
    if (!nv) { 
    scope.someProperty = "New Value"; 
    } 
}) 
+0

Это звучит очень разумно ... у вас есть решение для меня? как я могу присвоить значения по умолчанию дополнительным атрибутам? – user2717436

+0

@ user2717436, пожалуйста, проверьте обновленный ответ и plnkr. –

+0

Является ли это решение существенно повлиять на производительность? – user2717436

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