Browse Source

KERNEL-13158: 优化下useContext

es6
guy 2 years ago
parent
commit
721b0960b0
  1. 4
      dist/fix/fix.compact.js
  2. 21
      examples/useContext.html
  3. 7
      src/core/4.widget.js

4
dist/fix/fix.compact.js vendored

@ -78,7 +78,7 @@
}, options);
};
function findStore (widget) {
BI.Widget.findStore = function findStore (widget) {
if (target != null) {
return target;
}
@ -110,7 +110,7 @@
return true;
}
if (this._store) {
var store = findStore(this.options.context || this._parent || this.options.element || this._context);
var store = BI.Widget.findStore(this.options.context || this._parent || this.options.element || this._context);
if (store) {
pushTarget(store);
needPop = true;

21
examples/useContext.html

@ -5,12 +5,13 @@
<!-- <link rel="stylesheet" type="text/css" href="../dist/2.0/fineui.min.css"/>
<script src="../dist/2.0/fineui.js"></script> -->
<link rel="stylesheet" type="text/css" href="http://fanruan.design/fineui/2.0/fineui.min.css"/>
<!-- <script src="http://fanruan.design/fineui/2.0/fineui.min.js"></script> -->
<script src="http://localhost:9001/fineui.js"></script>
<script src="http://fanruan.design/fineui/2.0/fineui.min.js"></script>
<!-- <script src="http://localhost:9001/fineui.js"></script>-->
</head>
<style>
.my-parent {
--css-scale: 1;
font-size: calc(var(--css-scale) * 14px);
}
</style>
<body>
@ -99,6 +100,22 @@
ref: function (_ref) {
child = _ref;
}
}, {
type: "bi.time_periods",
width: 400,
height: 24,
value: {
start: {
hour: 7,
minute: 3,
second: 16
},
end: {
hour: 21,
minute: 3,
second: 35
}
}
}]
};
};

7
src/core/4.widget.js

@ -902,8 +902,9 @@
};
BI.useContext = function (inject) {
if (BI.Model.target) {
var vm = BI.Model.target;
// 通过组件找最近的store
var vm = BI.Widget.findStore(BI.Widget.current);
if (vm) {
if (inject) {
if (vm.$$computed && inject in vm.$$computed) {
return vm;
@ -923,7 +924,7 @@
return null;
}
}
return BI.Model.target;
return vm;
};
BI.watch = function (vm, watch, handler) {

Loading…
Cancel
Save