输入未与 Vue.js 正确绑定
Input not binding correctly with Vue.js
我对 Vue.js
还是比较陌生,并且在将我的输入之一绑定到我的视图模型时遇到问题。
这是我的 JavaScript:
var viewModel = new Vue({
el: "#InventoryContainer",
data: {
upcCode: "",
component: {
Name: ""
}
},
methods: {
upcEntered: function (e) {
if (this.upcCode.length > 0){
$.ajax({
url: "/Component/GetByUpc",
type: "GET",
data: {
upc: this.upcCode
}
}).done(function (response) {
if (response.exists) {
$("#ComponentInformation").toggleClass("hidden");
this.component = response.component;
} else {
alert("No component found.");
}
});
}
}
}
});
这是我的 HTML:
<div class="form-horizontal row">
<div class="col-sm-12">
<div class="form-group">
<label class="control-label col-md-4">UPC Code</label>
<div class="col-md-8">
<input id="ComponentUPC" class="form-control" placeholder="Scan or enter UPC Code" v-on:blur="upcEntered" v-model="upcCode" />
</div>
</div>
<div id="ComponentInformation" class="hidden">
<input type="text" class="form-control" readonly v-model="component.Name" />
</div>
</div>
</div>
现在的问题是,即使我输入有效的 UPC 代码并将组件分配给我的 ViewModel,绑定到 component.Name
的输入也不会更新组件名称。当我进入控制台时 viewModel.component.Name
我可以看到它 returns ""
.
但是,如果我在分配组件后在我的 ajax.done
函数中放置一个警告,它看起来像这样 alert(this.component.Name)
它会警告组件的名称。
知道我哪里出错了吗?
为了让 vue 工作,您需要使用 id InventoryContainer 定义父容器
<div id="InventoryContainer" class="form-horizontal row">
<div class="col-sm-12">
<div class="form-group">
....
这是更新后的代码:https://jsfiddle.net/hdqdmscv/
这是根据您的评论
更新后的 fiddle
https://jsfiddle.net/hdqdmscv/2/
(将其替换为 ajax 中的 vue 变量名称)
你不能使用那条线
this.component = response.component;
因为 this
-变量。
你应该把线
var self = this
在 ajax 调用之前使用 self.component
而不是 this.component
我对 Vue.js
还是比较陌生,并且在将我的输入之一绑定到我的视图模型时遇到问题。
这是我的 JavaScript:
var viewModel = new Vue({
el: "#InventoryContainer",
data: {
upcCode: "",
component: {
Name: ""
}
},
methods: {
upcEntered: function (e) {
if (this.upcCode.length > 0){
$.ajax({
url: "/Component/GetByUpc",
type: "GET",
data: {
upc: this.upcCode
}
}).done(function (response) {
if (response.exists) {
$("#ComponentInformation").toggleClass("hidden");
this.component = response.component;
} else {
alert("No component found.");
}
});
}
}
}
});
这是我的 HTML:
<div class="form-horizontal row">
<div class="col-sm-12">
<div class="form-group">
<label class="control-label col-md-4">UPC Code</label>
<div class="col-md-8">
<input id="ComponentUPC" class="form-control" placeholder="Scan or enter UPC Code" v-on:blur="upcEntered" v-model="upcCode" />
</div>
</div>
<div id="ComponentInformation" class="hidden">
<input type="text" class="form-control" readonly v-model="component.Name" />
</div>
</div>
</div>
现在的问题是,即使我输入有效的 UPC 代码并将组件分配给我的 ViewModel,绑定到 component.Name
的输入也不会更新组件名称。当我进入控制台时 viewModel.component.Name
我可以看到它 returns ""
.
但是,如果我在分配组件后在我的 ajax.done
函数中放置一个警告,它看起来像这样 alert(this.component.Name)
它会警告组件的名称。
知道我哪里出错了吗?
为了让 vue 工作,您需要使用 id InventoryContainer 定义父容器
<div id="InventoryContainer" class="form-horizontal row">
<div class="col-sm-12">
<div class="form-group">
....
这是更新后的代码:https://jsfiddle.net/hdqdmscv/ 这是根据您的评论
更新后的 fiddlehttps://jsfiddle.net/hdqdmscv/2/
(将其替换为 ajax 中的 vue 变量名称)
你不能使用那条线
this.component = response.component;
因为 this
-变量。
你应该把线
var self = this
在 ajax 调用之前使用 self.component
而不是 this.component