当我开始ngmodel领域,有一个问题让我纠结,那是什么使美元()做的。大量信息的简单描述,这让我很纠结,最后在一个晴朗的晚上,我终于
解决了这个问题
那么,这到底是什么渲染
方法呢他的目的是重新绑定模型数据时viewvalue美元的变化,但我们必须要注意的是。美元之间viewvalue和DOM节点的差异是不同的。我认为他们的差异是类似setTimeout和超时美元之间,但他们是不一样的。PS:其实模型和数据绑定可以是不同的
在
输入模型的价值:{ { } }试验VM。
。指令('modelrender,
函数(){(){
返回{
要求:'ngmodel,
链接:
功能(范围,IELM,iattrs,ngmodelctrl){
IElm.on('mouseenter,函数(){(){
尝试/注释
(1)ielm.val;
console.log(ngmodelctrl);
尝试/注释
ngmodelctrl setviewvalue美元(11);
console.log(ngmodelctrl);
尝试/注释
ngmodelctrl渲染(美元);
console.log(ngmodelctrl);
})
}
}
})
我们分析了几个案例。
这就是
鼠标没有被引导的方式。
1。当我们使用JS的方法
设置本地输入的值的值,并且不
执行$渲染功能,我们可以看到输入的模型价值里面是没有改变,但输入值变为1,我们不仅看到了模型的价值没有变化,ngmodel viewvalue美元美元模型还没有改变。我们可以得出的结论是,输入的值不一定等于$ viewvalue)
结果就是
--------------------------------------------------------------------------
然后,在执行js本机值之后,我们尝试执行$呈现函数。
在阅读上述实验之后,我们
发现输入的值没有改变。也就是说,价值输入的价值是无效的,所以我们可以看到这里提供的功能。
我们可以大胆预测美元与美元的渲染功能应用的功能是一样的,我们在上一章中提到的,应用是基于viewvalue美元,让模型为viewvalue,这是模型-> viewvalue美元,然后渲染不占主导地位的模型,让viewvalue ->模型 U3000
-------------------------------------------------------------------------------------------------
2。然后我们尝试用NG天然变化,即setviewvalue美元,它是如何表现
现在我们摆脱价值JS小学的变化,并用setviewvalue美元,并且不执行$渲染功能,直接在结果中,我们可以看到,setviewvalue美元执行后,都viewvalue和模型是
同步的,但输入值的内部测试,我们证实(的viewvalue美元和DOM节点值是不同的)
现在我们使用它后setviewvalue美元,美元呈现()看到的效果是什么,
我们发现,美元和美元渲染功能的应用功能非常相似,但不是很多人说美元的渲染,模型将同步的观点,我认为这是不对的,我测试了非常规的手段在单击事件改变了模型的
控制值,发现即使控制器的价值改变,但无论是viewvalue或模型的ngmodel值没有变化,然后尝试使用$模型
属性更改模型美元,结果不。
让我们来看一下渲染的源代码。
函数(){
element.val(Ctrl键(Ctrl美元。美元是空的。viewvalue):Ctrl。viewvalue美元);
};
这是其中之一。不同指令下的渲染代码有很大的不同,但它们的功能基本相同。但是从这里我们可以看到什么是渲染。事实上,当你想说的,你可以掩饰自己的方法,重写,手表或viewchange.the美元美元的违约事件时,一些特殊的输入值的变化,如广播,以及rollbackview()
另一个真正体现$渲染执行事件的源代码就在这里,我在它中编写注释,每个人都应该能够理解它。
美元美元范围。手表(功能ngmodelwatch(){)
ngmodel / /表达式的解析,对内容的访问
VaR模型= ngmodelget(范围);
如果范围模型的价值和ngmodel /值不同步
/ /待办事项(
性能):为什么不将这个动作FN
确定表达式的值是否 / /模型
如果(模型= = Ctrl美元模型!
检查南需要 /允许设定模型时有一个asyncvalidator南
(Ctrl。模型= Ctrl美元。美元| | =模型模型模型)
{)
/ /更新模型的价值
Ctrl。$模型= Ctrl。$ rawmodelvalue =模型;
parservalid =定义;
获取管道信息
VaR
格式化= Ctrl。受美元,
formatters.length IDX =;
U3000 U3000 U3000 U3000
VaR模型viewvalue =;
而(IDX——){
viewvalue =格式化{ }(viewvalue IDX);
}
/ /如果viewvalue不符合模型
如果viewvalue美元(Ctrl!= viewvalue){
Ctrl。viewvalue美元= Ctrl。$ lastcommittedviewvalue = viewvalue;
控件();
Ctrl。$ runvalidators(模型,viewvalue,空);
}
}
解析表达式返回
回归模型;
});
} };
以上是在$使角ngmodel
介绍所有内容的简要介绍,希望多
支持~