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"> 添加角色</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)会获得当前元素的子元素,要在合适的位置加上这个方法。
评论列表