Jquery 击出JS多点点击绑定
当我单击一个锚点时,我希望它保存对象(工作正常),并且我还希望使按钮不可见。我需要在单击按钮时将“InQuestionBank()”属性设置为true。如果我将锚点上的数据绑定更改为:Jquery 击出JS多点点击绑定,jquery,data-binding,knockout.js,Jquery,Data Binding,Knockout.js,当我单击一个锚点时,我希望它保存对象(工作正常),并且我还希望使按钮不可见。我需要在单击按钮时将“InQuestionBank()”属性设置为true。如果我将锚点上的数据绑定更改为: <a data-bind="click: InQuestionBank, visible: !InQuestionBank()" href="#" class="saveBank btn btn-info title" data-toggle="tooltip" data-original-title="I
<a data-bind="click: InQuestionBank, visible: !InQuestionBank()" href="#" class="saveBank btn btn-info title" data-toggle="tooltip" data-original-title="Insert into question bank"><i class="icon-plus-sign"></i></a>
按钮将消失。是否可能有多个单击绑定,或者是否有更好的方法
以下是我目前在我的观点中对我的锚的看法:
<a data-bind="click: $parent.SaveQuestionBank, visible: !InQuestionBank()" href="#" class="saveBank btn btn-info title" data-toggle="tooltip" data-original-title="Insert into question bank"><i class="icon-plus-sign"></i></a>
我的淘汰码:
var Question = function (data) {
var self = this;
self.Type = ko.observable(data.Type);
self.Question = ko.observable(data.Question);
self.Options = ko.observable(data.Options);
self.InQuestionBank = ko.observable(data.InQuestionBank);
}
var ViewModel = function (initial) {
var self = this;
self.Questions = ko.observableArray([]);
self.SaveQuestionBank = function (question) {
$.ajax({
url: initial.SaveQuestionBankUrl,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON({ question: question }),
success: function (data) {
if (data.status == "OK") {
$.msgGrowl({
type: 'success',
title: 'Question Bank',
text: 'Successfully saved question in question bank.'
});
}
else if (data.status == "ERROR") {
$.msgGrowl({
type: 'error',
title: 'Question Bank',
text: 'An error occurred - please try again.'
});
}
self.OverallQuestionsBank.push(new OverallQuestionBank({
Question: question.Question(),
Type: question.Type(),
Options: question.Options()
}));
}
});
}
for (var i = 0; i < initial.questions.length; i++) {
self.Questions.push(new Question(initial.questions[i], initial.ParentID));
}
}
var问题=函数(数据){
var self=这个;
self.Type=ko.observable(data.Type);
self.Question=ko.observable(data.Question);
self.Options=ko.observable(data.Options);
self.InQuestionBank=ko.可观察(data.InQuestionBank);
}
var ViewModel=函数(初始值){
var self=这个;
self.Questions=ko.observearray([]);
self.SaveQuestionBank=函数(问题){
$.ajax({
url:initial.SaveQuestionBankUrl,
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据:ko.toJSON({question:question}),
成功:功能(数据){
如果(data.status==“正常”){
$.msgGrowl({
键入:“成功”,
标题:"问题库",,
文本:“已成功保存问题库中的问题。”
});
}
else if(data.status==“ERROR”){
$.msgGrowl({
键入:“错误”,
标题:"问题库",,
text:'发生错误-请重试。'
});
}
自我总体问题库推送(新总体问题库)({
问题:问题。问题(),
类型:question.Type(),
选项:问题。选项()
}));
}
});
}
对于(var i=0;i
只需更改问题标志“InQuestionBank”,如下所示
var Question = function (data) {
var self = this;
self.Type = ko.observable(data.Type);
self.Question = ko.observable(data.Question);
self.Options = ko.observable(data.Options);
self.InQuestionBank = ko.observable(data.InQuestionBank);
}
var ViewModel = function (initial) {
var self = this;
self.Questions = ko.observableArray([]);
self.SaveQuestionBank = function (question) {
// Change the question's flag
question.InQuestionBank(true);
$.ajax({
url: initial.SaveQuestionBankUrl,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON({ question: question }),
success: function (data) {
self.OverallQuestionsBank.push(new OverallQuestionBank({
Question: question.Question(),
Type: question.Type(),
Options: question.Options()
}));
}
});
}
}
请记住,当您更改可观察属性(如InQuestionBank)的值时,您需要使用Knockout的“setter”函数来设置新值
在这种情况下,它将是question.InQuestionBank(true)为什么不在将标记“InQuestionBank”推送到服务器或整个问题库时更改它呢?在SaveQuestionBank函数中,我尝试了“self.InQuestionBank=true;”但这不起作用。检查我的答案,它会对你起作用,我会解释为什么在一秒钟内听起来很好,记住,在敲除中,我们需要使用“getter”函数来获取值,而设置值需要使用“setter”函数。你唯一不需要这样做的时候是如果你已经有了这个值(在你的例子中,因为你已经传递了'question'的值,所以你不需要问号()。InQuestionBank(true)只是问号。InQuestionBank(true))我忘记了设置新值的'setter'函数。我想得太多了。