概述
视图是否可以 直接访问,是指视图处于活动状态时,页面在刷新并装载完成后,呈现的第一个视图,是否即为刷新前的活动视图。
如果是,则说明该视图是可以直接访问的,否则说明该视图是不能直接访问的。
如果一个视图是可以直接访问的,那么这个视图就具备了传播能力:传播后仍然能够直接访问得到。
例如:
设置单个视图
除非明确指定,否则每个视图都默认是『不能』直接访问的 。
开发者可以通过属性 data-view-directly-accessible
指定视图是否可以直接访问,例如:
<!-- 声明视图可以直接访问 -->
<section
data-view-id="myView"
data-view-namespace = "my-namespace"
data-view-directly-accessible = "true">
</section>
开发者也可以通过 API 动态设置:
var view = View.ofId("myView");
/**
* 设置视图为 “可以直接访问”
*/
view.setAsDirectlyAccessible(true);
/**
* 判断视图当前是否可以直接访问
*/
console.log(view.isDirectlyAccessible()); // -> true
设置所有视图
开发者可以通过将 data-view-directly-accessible
属性声明在视图容器的 DOM 节点上,实现 “控制所有视图默认表现” 的目的。例如:
<!-- 设置所有视图默认可以直接访问 -->
<body data-view-container
data-view-directly-accessible = "true">
<!-- 设置视图可以直接访问 -->
<section
data-view-id="myView"
data-view-namespace = "my-namespace"
data-view-directly-accessible="true">
</section>
<!-- 设置视图不能直接访问 -->
<section
data-view-id="myView2"
data-view-namespace = "my-namespace"
data-view-directly-accessible="false">
</section>
<!-- 继承默认设置:因此可以直接访问 -->
<section data-view-id="myView3"></section>
</body>
如果特定视图单独做出了配置,则最终结果以视图配置为准。
以上面的代码为例,视图 myView2
是不能直接访问的,而视图 myView
和视图 myView3
则是可以直接访问的。
与单个视图一样,开发者同样可以使用 API 动态设置所有视图的默认表现:
/**
* 设置所有视图默认可以直接访问。
*/
View.setIsDirectlyAccessible(true);
/**
* 判断所有视图默认是否可以直接访问
*/
console.log(View.isDirectlyAccessible()); // -> true