angularJS - ng-options source触发项目禁用的ng-change

时间:2017-09-15 09:08:36

标签: javascript angularjs ng-options

我在使用ng-options和ng-change时遇到问题(我不能使用ng-repeat - 表格由自动打印的引擎打印) 我有两个绑定输入(比如数字和选择),两者都在触发变化时的功能。 ng-options使用具有Id和Max和Min属性的对象数组设置数据。

<input ng-model="Number" ng-change="foo()"/>
<select ng-model="Selection" ng-options="disable when (item.max<Number || item.min > Number ) for item in datas" ng-change="foo()"/>

select中的可选数据被禁用,具体取决于Number模型,有些只有在Number在其范围内时才可选择(item中的属性; item.maxRange; item.minRange)

$scope.foo=function(){
    console.log("Foo Fighter on the roll !");
}

当更改网页上两个输入的数据时,foo()会像往常一样被调用一次 但是,如果我从选择一个项目开始(假设最大值为35),那么在所选选项之外输入一个数字(假设为50) foo()函数被调用两次(一次用于Number更改,一次因为Item被禁用而未被选中)。 当项目被禁用时,有没有办法阻止第二次foo()调用?

我已经尝试了ng-model-options:{updateOn: "blur"},它会在手动更改和禁用select时停止foo()。 我打算为每个foo()调用做一些页面修改,如果函数只在输入一次文本后被调用两次,它就会出现错误。

我找到了一个(邪恶的)解决方案 邪恶我的意思是它不是完美的解决方案,而是某种ditry解决方法 我决定将一个计时器放在foo()中,因为同时触发了ng-change。该计时器将阻止呼叫,并在每次呼叫时重置。当两次ng-change都会启动时,foo()只能被调用一次! 仍然存在问题,这只是一个奇怪的解决方法

0 个答案:

没有答案
相关问题