视图直接访问

概述

视图是否可以 直接访问,是指视图处于活动状态时,页面在刷新并装载完成后,呈现的第一个视图,是否即为刷新前的活动视图。

如果是,则说明该视图是可以直接访问的,否则说明该视图是不能直接访问的。

如果一个视图是可以直接访问的,那么这个视图就具备了传播能力:传播后仍然能够直接访问得到。

例如:

可以直接访问 和 不可以直接访问的视图在页面刷新后的表现

设置单个视图

除非明确指定,否则每个视图都默认是『不能』直接访问的 。

开发者可以通过属性 data-view-directly-accessible 指定视图是否可以直接访问,例如:

view.html
view.html
<!-- 声明视图可以直接访问 -->
<section
data-view-id="myView"
data-view-namespace = "my-namespace"
data-view-directly-accessible = "true">
</section>

开发者也可以通过 API 动态设置:

init.js
init.js
var view = View.ofId("myView");
/**
* 设置视图为 “可以直接访问”
*/
view.setAsDirectlyAccessible(true);
/**
* 判断视图当前是否可以直接访问
*/
console.log(view.isDirectlyAccessible()); // -> true

设置所有视图

开发者可以通过将 data-view-directly-accessible 属性声明在视图容器的 DOM 节点上,实现 “控制所有视图默认表现” 的目的。例如:

index.html
index.html
<!-- 设置所有视图默认可以直接访问 -->
<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 动态设置所有视图的默认表现:

action.js
action.js
/**
* 设置所有视图默认可以直接访问。
*/
View.setIsDirectlyAccessible(true);
/**
* 判断所有视图默认是否可以直接访问
*/
console.log(View.isDirectlyAccessible()); // -> true