Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动到绑定到ObservalArray的列表中创建的DOM元素_Javascript_Knockout.js - Fatal编程技术网

Javascript 滚动到绑定到ObservalArray的列表中创建的DOM元素

Javascript 滚动到绑定到ObservalArray的列表中创建的DOM元素,javascript,knockout.js,Javascript,Knockout.js,我在一个元素上有一个击倒点击绑定。在单击处理程序内部,我向绑定到的observableArray添加了一个元素。当一个项目被添加到此ObservalArray时,我希望能够滚动页面,以便新添加的位于页面顶部。有没有办法做到这一点?我的想法是获取,然后使用scrollIntoView方法,但我不知道如何从数据中获取DOM元素。似乎我需要的是与ko.dataFor相反的东西。下面是一个JSFIDLE,其中有一个TODO,显示了我想要的内容:希望这会有所帮助: <ul data-bind="fo

我在一个元素上有一个击倒点击绑定。在单击处理程序内部,我向绑定到
的observableArray添加了一个元素。当一个项目被添加到此ObservalArray时,我希望能够滚动页面,以便新添加的
  • 位于页面顶部。有没有办法做到这一点?我的想法是获取
  • ,然后使用
    scrollIntoView
    方法,但我不知道如何从数据中获取DOM元素。似乎我需要的是与
    ko.dataFor
    相反的东西。下面是一个JSFIDLE,其中有一个TODO,显示了我想要的内容:

    希望这会有所帮助:

    <ul data-bind="foreach: myStuff">
        <li data-bind="text: name, setFocus: {}" "></li>
    </ul>
    
    var ctr = 2;
    
    ko.bindingHandlers.setFocus = {
        update: function(element, valueAccessor, allBindingsAccessor) {
            $('html,body').animate({scrollTop: $(element).offset().top}, 500);
        }
    };
    
    
    var vm = {
        myStuff: ko.observableArray([
            {name: 'foo1', desc: 'bar1'}
        ]),
        addFooBar: function() {
            this.myStuff.push({name: 'foo' + ctr, desc: 'bar' + ctr});
            ctr++;
        }
    };
    
    ko.applyBindings(vm);