我有一个带有ng-change="myFunc()" ng-model="themodel"$watch(themodel, function = {longAsyncFunc();})

我希望仅在longAsyncFunc返回时才触发myFunc()。 我虽然在做类似的事情:

$watch(themodel, function = {longAsyncFunc(); $scope.ready = true;})

myFunc = function() {
    while(!$scope.ready) {
        ;
    }
    $scope.ready = false;
    //do stuff
    }

但是它最终会陷入无限循环,并且手表永远不会触发。

我知道我应该使用promise,但是longAsyncFunc已经捕获了异步调用的.then(),我宁愿不对其进行修改。

#1楼 票数:0

您可以像这样使用回调:

$scope.longAsyncFunc = function(callback) {
   //do what ever you want
   callback();
}

$scope.$watch(themodel, function {
  longAsyncFunc(myFunc); 
  $scope.ready = true;
}

#2楼 票数:0

我不明白为什么您一起使用$watchng-change ,我建议您使用ng-change指令而不是$watchlongAsyncFunc将返回promise对象。

的HTML

ng-change="changeFunction()"

控制者

$scope.changeFunction = function() {
    longAsyncFunc().then(function(data){
        //this will ensure the async load completed.
        myFunction();
    })
}

  ask by IggY translate from so

未解决问题?本站智能推荐:

1回复

何时在Angularjs中使用$watch或ng-change

什么时候应该使用angular $watch函数和何时使用ng-change angularjs指令? 对我来说,他们都可以这样做。 它们之间是否存在差异或使用模式?
1回复

ng-change不会触发

ng-change不会触发我的功能,这是视图; 这是控制器: 有什么建议吗? 感谢您的帮助。
1回复

触发ng-change

我正在angularjs网站上练习。 在那里,有一个搜索栏,可以对字段中的任何变化进行研究,只要字符串长度超过2个字符即可。 无论如何。 在量角器中,我使用sendKeys输入名称,希望搜索开始,但无法获得任何结果。 而当我手动进行操作时,它可以正常工作。 这或多或少是我用来输入研究
3回复

AngularJS:在编写韩文字符时触发ng-change,ng-keyup或$scope。$watch

我正在建立一个韩语词汇训练师,我想比较人们输入的用户输入。 在韩语和其他一些亚洲语言中,您可以使用多个键盘事件撰写字母。 在Chrome中,$ scope。$ watch,ng-keyup和ng-change仅在字母完全合成并且输入了新字母或空格后触发。 我不介意AngularJS在最后
1回复

如何使ng-change工作将句子1更改为句子2

谢谢您的帮助。 Sentence1:您好,这是java,单击它应更改为Sentence2:您好,这不是java。 任何人都可以给我一个很好的解决方案,我有一个输入标签和复选框,并且ng-change可以正常工作,但是我希望文本更改具有相同的逻辑。
1回复

$watch或ng-change,用于检测范围输入的onchange并根据值进行处理

我是AngularJS / Ionic的新手,我正在尝试检测输入类型=“范围”的值的变化,并根据此值在js中执行操作。 但我不确定如何检测它:$ watch或ng-change? 这是代码:HTML: JS: http://codepen.io/LouisDoe/pen/jEEJ
1回复

ng-change内仅一次触发ng-change—Angular

我正在连接到Yahoo天气服务API,并使用Angular制作了一个简单的天气应用。 我还创建了一个F-C温度转换器,该转换器在ng-change()的帮助下触发。 但是由于某种原因,这仅在初始化时起作用一次。 由于某种原因,我无法理解为什么ng-repeat只能在ng-repeat内部触
4回复

ng-change不工作angularjs

我正在创建一个 Web 应用程序,其中有两个下拉列表,我想更改下拉列表 1 上的下拉列表 2 的数据更改 这是我的下拉列表,如果我选择一个特定的州,城市应该按照我的州进行填充但它不起作用,甚至在控制台中也不显示任何数据, 然后我尝试了 ng-click ng-click 工作正常,但我想使用不起作