我从0.4-0.5时代就没有使用过Polymer,而且我习惯使用隐藏属性 <my-element hidden="{{foo != bar}}"></my-element>
现在在Polymer 1.0中,我看到必须使用方法中的计算值来处理任何不是直接布尔值的值.我的代码是这样的:
<my-element hidden="{{_computeHidden()}}"></my-element>
然后在脚本部分:
Polymer({
is: 'super-element',
properties: {...},
_computeHidden: function(){
console.log('its being called, mkay');
return !(foo == bar);
}
});
Run Code Online (Sandbox Code Playgroud)
现在在控制台中,页面刷新后消息会出现两次,但是当foo更改值时,元素不会消失.我究竟做错了什么?
对于我的应用程序,我有核心类的基本实现,可以处理大部分样板代码。两个这样的实现是BaseActivity和BaseViewModel。它BaseViewModel仅具有 getter 和 setter,SingleLiveEvent<Boolean>可通过以下方式访问BaseActivity:
BaseActivity:
public class BaseActivity extends AppCompatActivity {
/* Some random variables */
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BaseViewModel viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);
// Observe loading state
viewModel.getLoadingEvents().observe(this, showLoading -> {
if (showLoading != null) {
showLoadingState(showLoading);
}
});
// Observer error events
viewModel.getErrorEvents().observe(this, throwable -> {
if (throwable != null) {
Alerts.displayError(this, throwable.getLocalizedMessage());
}
});
}
/* Some random methods */
}
Run Code Online (Sandbox Code Playgroud)
现在我还有其他活动(例如 …
我实现了自定义WebView与setSupportMultipleWindows()启用。因此,我也有一个WebChromeClient覆盖的自定义onCreateWindow()
对于大多数用途,我使用以下代码段在新窗口(即通过 打开target:_blank)中检索页面的 URL :
Message href = view.getHandler().obtainMessage();
view.requestFocusNodeHref(href);
String url = href.getData().getString("url");
Run Code Online (Sandbox Code Playgroud)
有空检查,但为了简单起见,我在上面的代码片段中删除了它们。现在的问题是,有时数据Bundle(通过 返回getData())具有相对链接的空 URL(即,href="/somepage"而不是href="https://www.example.com/somepage/")。
所以我搜索了 SO 并找到了另一个可能的解决方案:
WebView.HitTestResult result = view.getHitTestResult();
String url = result.getExtra();
Run Code Online (Sandbox Code Playgroud)
但是,这也会返回 null。如果我使用result.getType()它获取数据的类型,则返回 0,它映射到UNKNOWN_TYPE.`
我不确定为什么它为上述方法返回 null。注意,如果我禁用对多个窗口的支持,这些相同的链接就可以正常工作。但是,禁用此类支持不是一种选择。还有另一种方法可以从内部获取 URLonCreateWindow()吗?
android ×2
android-architecture-components ×1
java ×1
mvvm ×1
polymer ×1
polymer-1.0 ×1
viewmodel ×1