Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用ng if初始化昂贵元素,然后使用ng show/hide显示/隐藏_Angularjs - Fatal编程技术网

Angularjs 使用ng if初始化昂贵元素,然后使用ng show/hide显示/隐藏

Angularjs 使用ng if初始化昂贵元素,然后使用ng show/hide显示/隐藏,angularjs,Angularjs,我有一个元素的生成是昂贵的。因此,我不使用以下方法将其包含在初始页面加载中: <div id='myExpensiveElement' ng-if='showElement'> 如果用户单击特定按钮: <button ng-click='showElement = !showElement'> 生成昂贵的元素并将其插入DOM。用户可以通过再次单击按钮来选择隐藏该元素。但是,这会导致从DOM中删除元素,需要再次生成该元素 有没有一种方法可以将ng show/h

我有一个元素的生成是昂贵的。因此,我不使用以下方法将其包含在初始页面加载中:

<div id='myExpensiveElement' ng-if='showElement'> 

如果用户单击特定按钮:

<button ng-click='showElement = !showElement'>

生成昂贵的元素并将其插入DOM。用户可以通过再次单击按钮来选择隐藏该元素。但是,这会导致从DOM中删除元素,需要再次生成该元素


有没有一种方法可以将ng show/hide与ng if组合在一起,如果元素已经生成一次,则切换为使用ng show/hide而不是ng if?

一种不使用自定义指令的简单方法是使用另一个变量来跟踪初始化

<button ng-click='showElement = !showElement; elementInitialized = true'></button>
<div id='myExpensiveElement' ng-if='elementInitialized' ng-show='showElement'> 
...
</div>

...