如何修改responseText: self.registrationmark
以使self.registrationmark
的值评估为变量而不是字符串?
e.g。如果self.registrationmark
的值为DE63BEY
,则responseText:
应评估为变量DE63BEY
HTML
<input type="text" id="registrationmark" data-bind="value: registrationmark">
的Javascript
function ViewModel() {
var self = this;
self.registrationmark = ko.observable();
var DE63BEY = { ... }
var SL64KWX = { ... }
var CU56OHG = { ... }
var VN10YMY = { ... }
var Y926MNB = { ... }
$.mockjax({
url: '/test',
dataType: 'json',
responseTime: 2500,
responseText: self.registrationmark
});
...
}
ko.applyBindings(new ViewModel());
答案 0 :(得分:2)
刚刚在上面阅读了您对Matthew的评论,我认为您首先需要将变量的范围设置为此/ self:
self.DE63BEY = { ... }
self.SL64KWX = { ... }
self.CU56OHG = { ... }
self.VN10YMY = { ... }
self.Y926MNB = { ... }
然后你必须追求:
responseText: self[self.registrationmark()]
即,致电
self.registrationmark()
获取类似“DE63BEY”的字符串然后获取相应的变量,你需要在self中查找它,就好像你在做:
self["DE63BEY"]
当然等同于
self.DE63BEY
这是你要追求的变量!
答案 1 :(得分:1)
正如@sifriday所描述的,你可以定义你的&#34;变量&#34;作为对象的属性,可以通过名称查找。它们不一定必须在self
中定义。它可以是一个单独的对象:
var responses = {
DE63BEY: { ... },
SL64KWX: { ... },
CU56OHG: { ... },
VN10YMY: { ... },
Y926MNB: { ... }
};
然后
responseText: responses[self.registrationmark()]
如果由于某种原因,您需要将值定义为变量,则可以使用eval
动态读取它们的值。 此方法可能不安全,不应使用。
responseText: eval(self.registrationmark())
答案 2 :(得分:0)
尝试以下方法:
$.mockjax({
url: '/test',
dataType: 'json',
responseTime: 2500,
responseText: ko.unwrap(self.registrationmark)
});