javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

jQuery-Knockout.js获取与d关联的dom对象

我正在使用基因敲除(Knockout.js)来构建动态列表,并且试图弄清楚如何获取与可观察数组中的对象相关联的DOM对象。 具体来说,我想连续获取jQuery。

例:

<ul data-bind="foreach: Item">
    <li data-bind="events: {click: getDomObject}, text: 'text: ' + text">
    </li>
</ul>

id函数中,我希望能够获取特定的<li></li> DOM对象,以便可以使用它进行一些jQuery操作。

我曾考虑过将id成员添加到Item ViewModel中,然后将该ID添加为订单项的html ID,然后根据该ID进行选择,但我认为应该有一种更简单的方法。

引用由基因敲除生成的动态HTML的正确方法是什么?

trans by 2020-02-07T20:48:03Z

基因敲除.js-在基因敲除JS中克隆/复制observablearray的最佳方法是什么?

问题真的说明了一切。 我想将一个可观察的数组复制到KnockoutJS中的另一个数组。

trans by 2020-02-03T22:49:02Z

基因敲除.js-敲除foreach绑定中的$ index + 1

我需要在表格中显示<span data-bind="text: ($index + 1)"> </span>

如果我仅使用2730657752803705705,所有元素都将从0开始,那么我需要从1开始。

这是淘汰赛的文档:[http://knockoutjs.com/documentation/foreach-binding.html]

在这里,您可以找到以下示例:

<h4>People</h4>
<ul data-bind="foreach: people">
    <li>
        Name at position <span data-bind="text: $index"> </span>:
        <span data-bind="text: name"> </span>
        <a href="#" data-bind="click: $parent.removePerson">Remove</a>
    </li>
</ul>
<button data-bind="click: addPerson">Add</button>

因此它将显示以下内容:

位置0处的名称:删除Bert

位置1的名字:Charles Remove

位置2的名字:Denise Remove

我确实需要将此仅用于显示目的。

位置1的名称:删除

位置2的名字:Charles Remove

位置3的名字:Denise Remove

我尝试了这个没有成功<span data-bind="text: ($index + 1)"> </span>

trans by 2020-02-03T02:40:47Z

javascript-首选客户端路由解决方案?

我正在设计一个基于一页浏览器的Web应用程序。

Backbone.js已在我的应用程序中使用。 我目前正计划将KnockoutJS用于数据绑定和UI管理。 但是,我过去使用过KnockoutJS,并且对控制器层提供的路由功能印象深刻。

我还研究了一些基于JQuery的解决方案,例如用于客户端路由的pathjs。

如果有人可以提供建议和准则以选择合适的路由系统,那就太好了。

我不愿意使用Backbone.js而不是KnockoutJS,因为KnockoutJS具有出色的数据绑定功能。

trans by 2020-02-02T11:34:49Z

javascript-在Knockout.js中注释foreach绑定与foreach绑定

在我的HTML中,我可以定义以下剔除foreach绑定:

<!-- ko foreach: customer -->
   <div data-bind="text: id" />
<!-- /ko -->

<div data-bind="foreach: customer">
    <div data-bind="text: id" />
</div>

这两种方法之间的区别在哪里?

trans by 2020-01-27T10:46:17Z

kickout.js并在复选框上侦听检查事件

我正在尝试让一个功能处于选中状态或未选中状态时执行,以验证所有复选框均处于未选中状态,但它从未执行过。 我认为我做的不正确。

@Html.CheckBox("Subscription", new{ data_bind="disable: Disabled, checked: Checked, click: $parent.allSubscriptionsUnchecked"} ) 
trans by 2020-01-26T21:26:10Z

jQuery-JSON解析错误语法错误输入意外结束

我得到了以下代码

function pushJsonData(productName) {
    $.ajax({
        url: "/knockout/SaveProduct",
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        data: " { \"Name\" : \"AA\" } ",
        async: false,
        success: function () {
            loadJsonData();   
        },
        error: function (jqXHR, textStatus, errorThrown) {
          alert(textStatus + " in pushJsonData: " + errorThrown + " " + jqXHR);
        }
    });
}

请注意,我对数据值进行了硬编码。 数据被很好地推送到数据库中。 但是,我不断收到错误“解析错误语法错误,输入意外结束”。 我确定我的数据使用正确的JSON语法。 当我在Chrome检查器的网络检查器中进行检查时,saveProduct请求显示数据正确。

{ "Name": "AA" }

此POST请求没有响应。 因此,我对于解析错误的来源一无所知。 我尝试使用FireFox浏览器。 同样的事情发生了。

任何人都可以对什么地方出了错吗?

谢谢,

附言这是控制器代码

namespace MvcApplJSON.Controllers
{
    public class KnockoutController : Controller
    {
        //
        // GET: /Knockout/

        public ActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public JsonResult GetProductList()
        {
            var model = new List<Product>();
            try
            {
                using (var db = new KOEntities())
                {
                    var product = from p in db.Products orderby p.Name select p;
                    model = product.ToList();
                }
            }
            catch (Exception ex)
            { throw ex; }
            return Json(model, JsonRequestBehavior.AllowGet);
        }
        [HttpPost]
        public void SaveProduct (Product product)
        {
            using (var db = new KOEntities())
            {
                db.Products.Add(new Product { Name = product.Name, DateCreated = DateTime.Now });
                db.SaveChanges();
            }
        }
    }
}
trans by 2020-01-20T19:41:47Z

javascript-使用onclick或带有KnockoutJ的click绑定传递参数

我有这个功能:

function make(place)
{
  place.innerHTML = "somthing"
}

我曾经用普通的JavaScript和html来做到这一点:

<button onclick="make(this.parent)">click me</button>

如何使用惯用的tickout.js做到这一点?

trans by 2020-01-15T20:49:46Z

语法-Knockout.js无容器的“ foreach”不适用于<table>

这段代码引发错误(在Chrome中):“找不到匹配的结束注释标记:ko foreach:MyPlans”:

<table>
  <!-- ko foreach: MyPlans -->
    <tr>
      <td>Test</td>
    </tr>
  <!-- /ko -->
</table>

如果我改用列表,则一切正常:

<ul>
  <!-- ko foreach: MyPlans -->
    <li>
      Test
    </li>
  <!-- /ko -->
</ul>

我想将无容器的foreach与表一起使用。 我做错了什么吗? 是虫子吗?

trans by 2020-01-11T14:38:48Z

javascript-有条件地在kickout.js中添加一个element属性

kickout.js库具有"attr"数据绑定,可让您动态更改HTML元素属性的值(例如“ title”)。 但是,在某些情况下,取决于绑定对象上的相应可观察对象,可能需要或可能不需要该属性。 例如,如果我的模型具有可观察到的“标题”,那么我可能想设置“ title”属性(如果存在)(非null),或者完全跳过该属性(如果不存在)(null)。

敲除是否提供有条件地设置属性的任何方式? (理想情况下,无需有条件地渲染整个元素开始标记...)

[注意]这个类似命名的问题实际上是由剔除对CSS类的特殊处理解决的,并且与以下问题(或其标题)无关:如何使用敲除js有条件地呈现css类

trans by 2020-01-03T20:26:04Z

kickout.js-淘汰赛:可观察的vs函数

使用淘汰赛时,使用只读的可计算观察值而不是简单函数有什么好处?

以下面的viewmodel构造函数和html代码段为例:

var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable("abc");
    self.anotherProperty = ko.observable("xyz");
    self.someComputedProperty = function(){
        return self.someProperty() + self.anotherProperty();
    };    
};

<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty()"></p>

这里的一切似乎都可以按照您的预期工作,所以有理由我应该使用:

​var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable("abc");
    self.anotherProperty = ko.observable("xyz");
    self.someComputedProperty = ko.computed(function(){
        return self.someProperty() + self.anotherProperty();
    });    
};


<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty"></p>

我注意到[http://knockoutjs.com/documentation/computedObservables.html]上的文档指出“ ...声明性绑定只是作为计算的可观察对象实现的”,因此这意味着我需要在 我的视图模型?

trans by 2020-01-02T11:18:38Z

kickout.js-在Enter键上调用函数

当按下回车键时如何使用敲门.js调用函数..这是我的下面代码。

ko.bindingHandlers.enterkey = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
    var inputSelector = 'input,textarea,select';
    $(document).on('keypress', inputSelector, function (e) {
        var allBindings = allBindingsAccessor();
        $(element).on('keypress', 'input, textarea, select', function (e) {
            var keyCode = e.which || e.keyCode;
            if (keyCode !== 13) {
                alert('a');
                return true;
            }

            var target = e.target;
            target.blur();

            allBindings.enterkey.call(viewModel, viewModel, target, element);
            alert('b');
            return false;
        });
    });
}
};
ko.applyBindings(viewModel);

的HTML

<input type="text" data-bind="value:sendMessageText, enterkey: sendMessage" /> 

视图模型

function contactsModel(){
    var self = this;
    self.jid=ko.observable();
    self.userName=ko.observable();
    self.sendMsgText=ko.observable();
    self.sendMessage = function(){
        if(self.sendMessageText() == '' )
            alert("Enter something in input field");
        else{
            var message = {
                to : self.userName(),
                message : self.sendMsgText()
            }
            self.sentMessages.push(message);
            sendMessage(message);
        }

     }
 }

关于此处错误之处的任何想法或建议的更好方法。

trans by 2019-12-28T22:52:37Z

kickout.js-在自定义敲除绑定的更新和初始化之间存储状态的首选方法是什么?

目前,我使用dom元素的jQuery数据存储状态。

ko.bindingHandlers.customValue = {

    init: function init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        var state = { isEditing: false };        
        $(element).focus(function focus() {
            state.isEditing = true;
        }).blur(function blur() {
            state.isEditing = false;            
        }).data("customBinding", state);

    },

    update: function update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        // ignore if updating
        if (!$(element).data("customBinding").isEditing) {
            // handle update if they are not updating                                
        }
    }

};​

是否有一个更好的位置来存储不需要dom的每个绑定的状态? 可以使用bindingContext来为绑定的每个实例存储状态吗?

trans by 2019-11-18T08:12:35Z

asp.net mvc-是否有理由我会使用Knockout MVC而不是Knockout JS?

另一个用户建议使用Knockout MVC处理一些AJAX发布问题。 我读了一些,然后看到它是Knockout JS的包装。 所以我想知道两者之间的真正区别是什么? 由于存在Knockout MVC,我是否应该打扰Knockout JS? 我什么时候可以使用另一个?

trans by 2019-11-12T11:56:44Z

基因敲除-基因敲除-带有加载时触发的参数的绑定

最近我一直在做很多淘汰赛,并且遇到了一种奇怪的情况。

如您在此小提琴中所见[http://jsfiddle.net/hqXjv/],当您设置到click: testMethod的绑定时,单击该按钮时动作就会触发。

如您在此小提琴中所见[http://jsfiddle.net/kxTzM/],当您将绑定设置为click: testMethod()时,该动作在单击按钮和页面加载时均会触发(我猜是applyBindings)

重现此问题不需要参数,如果在第一个小提琴中将绑定更改为click: testMethod(),则会看到它是在页面加载时触发的。

虽然可以,但是我可以向该元素添加另一个属性,并尝试将其用作参数,但我的问题是,有没有一种方法可以将参数传递给基因敲除绑定而不触发加载。 如果这是一个错误,那就这样吧,但是我只想知道一种避免它的方法。

trans by 2019-10-12T20:21:18Z

javascript-如何从可观察的.computed()内部使用敲除的$ parent / $ root伪变量?

在基因敲除.js绑定表达式中,可以使用2562075775528828862720、$parent$root伪变量。 当我使用JavaScript中声明的$data observable时,如何获得这些伪变量的等价物?

我有一个带有子级集合的父视图模型,并且该父视图模型具有可观察到的$data。 鉴于此,我可以使用数据绑定表达式将CSS类添加到当前选择的任何子级:

<ul data-bind="foreach: children">
    <li data-bind="text: name,
                   css: {selected: $data === $root.selectedChild()},
                   click: $root.selectChild"></li>
</ul>
<script>
vm = {
    selectedChild: ko.observable(),
    children: [{name: 'Bob'}, {name: 'Ned'}],
    selectChild: function(child) { vm.selectedChild(child); }
};
ko.applyBindings(vm);
</script>

但是我的视图模型将变得更加复杂,我想“我被选中了吗?” 不仅可以将单个CSS类添加到单个元素中,还可以做更多的事情。 我真的很想在子viewmodel上创建$data计算属性,因此可以添加依赖于它的其他计算属性。

我试过只编写引用$data$root的JavaScript,但有一次机会,敲除可能会定义这些变量,并在调用我的contextFor评估程序函数时使它们处于范围内:

{
  name: 'Bob',
  isSelected: ko.computed(function(){ return $data === $root.selectedChild(); })
}

但是没有这样的运气:在我的评估器$data中,$rootcontextFor都是undefined

我还尝试在评估器中使用$data,因为它确实可以访问$data$root。不幸的是,在评估器函数中,contextFor也始终返回undefined。 尚不清楚如果我必须像这样落后,淘汰赛能够很好地跟踪依赖项。)

我总是可以在每个引用到父视图模型的子视图模型上手动设置属性。 但是我知道淘汰赛有能力为我做到这一点,并且我至少想在写自己的文章之前探索一下是否可以使用它的机制。

似乎应该可以将上述绑定表达式转换为可计算的可观察值了-毕竟,这就是敲除的作用:

另一个巧妙的技巧是声明式绑定仅作为计算的可观察对象实现。

但是,当我编写自己的可计算观察值时,如何处理$data$root伪变量?

trans by 2019-10-09T19:29:48Z

kickout.js-绑定到简单的字符串数组

如果我想将模板绑定到简单的旧字符串数组,我应该在$ {??}表达式中放什么?

我希望这段代码不要太短,以免引起混淆:

<ul data-bind="template: { name: 'authorTemplate', foreach: authors }">
</ul>

作者简直是val

<script type="text/x-jquery-tmpl" id="authorTemplate">
    <li>${what_do_I_put_here???}</li>
</script>

我已经尝试过:val value thisthis.toString()。最后两个显示了[object Object],所以我怀疑我已经很近了。

trans by 2019-10-01T16:06:41Z

javascript-如何使用Knockout.js在特定位置将项目添加/插入ObservableArray中

我发现的所有敲除示例似乎都使用类似以下方法在ObservableArray的末尾添加了一个新项目:

viewModel.SomeItems.push(someNewItem);

当然,这会将项目放置在数组的末尾。

如何在某个位置将项目添加到ObservableArray?

例如。 就像是:

viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
trans by 2019-09-24T19:49:15Z

javascript-订阅可观察数组仅用于新条目或已删除条目

所以是的,我可以订阅一个可观察的数组:

vm.myArray = ko.observableArray();
vm.myArray.subscribe(function(newVal){...});

问题是newVal传递给函数是整个数组。 无论如何,我只能得到增量部分吗? 说添加或删除的元素?

trans by 2019-09-24T12:25:56Z

knockout.js - 在同一个observab的订阅中获取一个observable的先前值

在获得新值之前,是否可以在knockout中获取可观察的可观察量的当前值?

例:

this.myObservable = ko.observable();
this.myObservable.subscribe(function(newValue){
    //I'd like to get the previous value of 'myObservable' here before it's set to newValue
});
trans by 2019-09-17T23:49:11Z

1 2 3 下一页 共3页