2013-04-30 2 views
0

Если вы посмотрите на эту скрипту http://jsfiddle.net/waylon999/peR9P/3/, вы увидите, что я пытаюсь сделать. Я пытаюсь использовать компиляцию $, чтобы заменить шаблон другим шаблоном.

Я бы ожидать:

scope.compiledVal = $compile(scope.value)(scope); 

компилировать содержимое

"<div>{{ name }}</div>" 

с связанным приложением именем, которое передается в с размахом, а затем заменить compiledVal в

<div>{{ compiledVal }}</div> 

с скомпилированным шаблоном. Это не происходит, хотя, на выходе просто

{{ compiledVal }} 

и если я открываю консоль JSFiddle, я вижу ошибку: TypeError: Преобразование круговой структуры JSON

Есть ли что-нибудь очевидно, что я делаю Неправильно здесь?

Спасибо!

+0

Короткий ответ: это не «угловой» способ подойти к этому вопросу. Более длинный ответ: вы вызываете '$ compile' внутри цикла дайджеста, что вызывает цикл, это довольно сложно. Было бы неплохо прочесть в угловом цикле дайджест http://docs.angularjs.org/api/ng.$rootScope.Scope#$digest. Чтобы динамически переключать содержимое шаблона, вы должны использовать что-то вроде 'ng-switch' или даже' ng-include' –

ответ

0

Таким образом, в ответ на мой вопрос, это выглядит, как я мог бы использовать

var tmp = $compile(scope.value)(scope); 
element.append(tmp); 

обновленный скрипку http://jsfiddle.net/waylon999/peR9P/3/.

Но нужно будет пересмотреть после того, как комментарий Alex Осборна ...

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