文章内容

2016/12/16 15:01:05,作 者: 黄兵

Knockout无法获取当前Url

最近在用Knockout+asp.net mvc绑定的时候怎么也无法获取当前的Uri代码如下;

<div class="col-lg-2">
<a class="btn btn-success margin-top-20" data-bind="click:createRoleModal,attr:{href:'@Url.Action("CreateRole","Account")'}">
<i class="fa fa-plus-square"></i><span class="bold">&nbsp;添加角色</span>
</a>
</div>

经过分析,原来是因为在<a>标签下面加入了<i>标签,而获得i变迁的内容。

后台JS代码如下;

self.createRoleModal = function (data, event) {
self.sending = ko.observable(false);

$.get($(event.target).attr('href'), function (d) {
console.log($(event.target).attr('href'));
$('.border-bottom').prepend(d);
$('#createRoleModal').modal('show');

ko.applyBindings(self, document.getElementById('createRoleModal'));
});
};

获得当前的“href”,完全无法得到。


这张图可以看到当前的class为bold

也就是没有获取到herf的属性,获取到的是<span>的属性。




如果获取不到当前的Url就会显示当前的页面。

上图的d="..."就是当前的页面代码。

现在更改源代码:

<div class="col-lg-2">
<a class="btn btn-success margin-top-20" data-bind="click:createRoleModal,attr:{href:'@Url.Action("CreateRole","Account")'}">
增加角色
</a>
</div>

去掉了中间的<i>和<span>标签后,结果如下:


得到了当前的class


得到了当前的URI。通过这次代码调试得到如下结论:

$(event.target)会获得当前元素的子元素,要在合适的位置加上这个方法。

详细内容参考这里:$(event.target)参考1

                                event的target和currentTarget的区别

分享到:

发表评论

评论列表