Sal*_*ali 4 knockout.js knockout-3.0 knockout-components
我正在努力推进淘汰赛3.2中的自定义组件.如果我使用预定义的参数,一切都很好.例如,这是jsFiddle.
但是当我从我的视图模型传递参数时(我已经阅读了如何在这里做)我没有得到任何东西:jsFiddle.我究竟做错了什么?
这是我的js代码:
ko.components.register('pagination', {
viewModel: function (params) {
var self = this;
this.page = ko.observable(params.page);
this.max = ko.observable(params.max);
this.list = ko.pureComputed(function () {
var a = self.page(),
list = [],
min = a - 2 < 1 ? 1 : a - 2,
max = a + 2 > self.max() ? self.max() : a + 2;
for (var i = min; i <= max; i++) {
list.push(i);
}
return ko.observableArray(list);
});
this.callback = function (i) {
console.log(i);
self.page(i);
};
},
template: {
element: 'pagination-tpl'
}
});
function Vm(){
this.page = ko.observable(2);
this.max = ko.observable(6);
}
var vm = new Vm();
ko.applyBindings(vm, document.getElementById('koBinding_somePage'));
Run Code Online (Sandbox Code Playgroud)
该链接的文章解释了这种行为诠释他的PARAMS是如何传递到组件部分:
如果参数本身创建依赖项(访问observable或computed的值),则组件将接收返回值的computed.
所以在你的情况下params.page,params.max包含一个计算的observable属性,而不是值.
所以你只需要将它们分配给你的本地字段:
viewModel: function (params) {
var self = this;
this.page = params.page;
this.max = params.max;
//...
}
Run Code Online (Sandbox Code Playgroud)
演示JSFiddle.
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |