免责声明:这是我第一次尝试构建MVVM应用程序,我以前也没有使用过vue.js,所以我的问题很可能是一个更根本的问题造成的。
在我看来,我有两种带复选框的块:
底层对象的结构如下所示:
{
"someTopLevelSetting": "someValue",
"blocks": [
{
"name": "someBlockName",
"categryLevel": "false",
"variables": [
{
"name": "someVarName",
"value": "someVarValue",
"selected": false,
"disabled": false
}
]
},
{
"name": "someOtherBlockName",
"categryLevel": "true",
"variables": [
{
"name": "someVarName",
"value": "someVarValue",
"categories": [
{
"name": "SomeCatName",
"value": "someCatValue",
"selected": false,
"disabled": false
}
]
}
]
}
]
}
我的目标
选择复选框:
清除复选框
用户可以单击清除按钮,取消选中列表中的所有复选框(选择=假)。此操作还应该触发可选地禁用复选框和更新图标等方法。
我现在的方法(好像不太对)
v-model
指令绑定到checkbox元素的选中状态。v-on=“change:checkboxChange(this)”
指令。我想我需要用不同的方式来完成这部分 v-on=“单击:clearList(this)”
我当前设置的问题是,当以编程方式清除复选框时(即不通过用户交互),更改事件不会触发。
对我来说,最合乎逻辑的做法是使用this.$watch
并跟踪模型中的更改,而不是侦听DOM事件。
一旦有了变化,我就需要确定哪个项目发生了变化,并采取行动。我尝试创建一个$watch
函数来观察块
数组。这似乎很好地处理了更改,但它返回了完整的对象,而不是已经更改的单个属性。这个对象也缺少一些方便的助手属性,比如$父
。
我可以想出一些让应用程序工作的黑客方法(比如在我的clearList方法中手动触发更改事件,等等),但是我的用例看起来相当标准,所以我希望可能有一种更优雅的方法来处理这个问题。
此处未提及的其他解决方案:使用deep
选项。
watch:{
block: {
handler: function () {console.log("changed") },
deep: true
}
}
如果要将对象视为一个整体,包括其所有属性,而不仅仅是一个属性,则可以执行以下操作:
data() {
return {
object: {
prop1: "a",
prop2: "b",
}
}
},
watch: {
object: {
handler(newVal, oldVal) {
// do something with the object
},
deep: true,
},
},
注意处理程序
和深层:true
如果你只想看prop1
,你可以:
watch: {
'object.prop1' : function(newVal, oldVal) {
// do something here
}
}
你可以用“观察”的方法。。例如,如果您的数据是:
data: {
block: {
checkbox: {
active:false
},
someotherprop: {
changeme: 0
}
}
}
你可以这样做:
data: {...},
watch: {
'block.checkbox.active': function() {
// checkbox active state has changed
this.block.someotherprop.changeme = 5;
}
}
问题内容: 我想监视字典中的更改,但是由于某种原因,未调用监视回调。 这是我使用的控制器: 这是小提琴。 我希望每次更改名称或姓氏时都会触发$ watch回调,但是不会发生。 正确的方法是什么? 问题答案: 调用with 作为第三个参数: 默认情况下,在JavaScript中比较两个复杂对象时,将检查它们是否具有“引用”相等性,即询问两个对象是否引用同一事物,而不是“值”相等性,后者检查这些对
我面临的问题是我需要一个身份验证令牌来创建我的Retrofit服务。我目前使用可观察来获取所述令牌,导致一个相当丑陋的可观察构造: 我忍不住觉得这不是应该做的。我说得对吗?
我正在努力理解如何合并两个可观察对象并利用它们合并后的产品。我在mergeMap、switchMap、flatMap、大理石图等上看了无数视频,但我仍然不知道合并观测值是如何工作的。我觉得在使用RxJS的时候,我不会有效率,甚至不会正确。 我有一个要订阅的可观测值,我还想订阅代码中特定表单数组的valueChanges可观测值。但是,我需要确保只有在正确构建表单数组之后才能进行第二次订阅,否则将出
嗨,伙计们,我有一个问题,从一开始,我会提到我已经尝试过这个和这个 我的情况如下。我有API,它发送给我 根目录处于组件状态! 我如何更新,,,,,与?最后一个约束是我不能更改root的名称(我不能将其重命名为newRoot等) 我尝试的是调用这个函数: 因此:
假设我有一个返回列表的博客帖子api 从列表创建可观察 将每个可观察拆分为
问题内容: 这是我在elasticsearch中存储在索引上的数据类型。我必须找到包含主要成分牛肉(且重量小于1000)和成分-(辣椒粉且重量小于250),(橄榄油和重量小于300)以及所有其他成分类似的食谱。 索引的映射是 我的查询是 但这给了Null。有人可以帮我吗?我认为我没有正确使用嵌套查询 问题答案: 试试这个: