Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS 1.2.26$scope异步函数执行摘要周期错误_Javascript_Angularjs_Asynchronous - Fatal编程技术网

Javascript AngularJS 1.2.26$scope异步函数执行摘要周期错误

Javascript AngularJS 1.2.26$scope异步函数执行摘要周期错误,javascript,angularjs,asynchronous,Javascript,Angularjs,Asynchronous,我需要在作用域中有一个函数,其结果将异步更改 必须有一个函数用作表达式,因此我不能使用单个属性 在我的示例中,该函数返回将被异步修改的对象的属性。这将执行摘要错误,尽管该值在整个摘要周期内相等。 下面是一个例子: (注意:它可能会挂起您的浏览器) 你知道怎么解决吗?我有一个解决方案,问题是一直执行$http.get,它会创建承诺,而承诺将同时得到解决。因此,首先我通过检查承诺是否已经创建来解决问题。之后,在promise的回调中,我将控制promise是否创建为null的var设置为null,但

我需要在作用域中有一个函数,其结果将异步更改

必须有一个函数用作表达式,因此我不能使用单个属性

在我的示例中,该函数返回将被异步修改的对象的属性。这将执行摘要错误,尽管该值在整个摘要周期内相等。 下面是一个例子: (注意:它可能会挂起您的浏览器)


你知道怎么解决吗?

我有一个解决方案,问题是一直执行$http.get,它会创建承诺,而承诺将同时得到解决。因此,首先我通过检查承诺是否已经创建来解决问题。之后,在promise的回调中,我将控制promise是否创建为null的var设置为null,但我重新定义了一种桥接函数,该桥接函数返回相同的值,以避免在相同的$digest中执行$http.get:

以及html:

<body>
    <div ng-controller="Ctrl1">
          <br/><br/>
          Param1:<input type="text" ng-model="model.param1" />
          Param2:<input type="text" ng-model="model.param2" />

        AsyncFunc: {{util.asyncFunc(model.param1, model.param2)}}
    </div>

    <script src="http://code.angularjs.org/1.2.26/angular.js"></script>
    <script src="script.js"></script>
  </body>



参数1: 参数2: AsyncFunc:{{util.AsyncFunc(model.param1,model.param2)}

嗯,我认为这肯定不是最好的解决方案,如果您有其他方法,它将非常有用。

我有一个解决方案,问题是始终执行$http.get,它会创建承诺,同时会解决这些承诺。因此,首先我通过检查承诺是否已经创建来解决问题。之后,在promise的回调中,我将控制promise是否创建为null的var设置为null,但我重新定义了一种桥接函数,该桥接函数返回相同的值,以避免在相同的$digest中执行$http.get:

以及html:

<body>
    <div ng-controller="Ctrl1">
          <br/><br/>
          Param1:<input type="text" ng-model="model.param1" />
          Param2:<input type="text" ng-model="model.param2" />

        AsyncFunc: {{util.asyncFunc(model.param1, model.param2)}}
    </div>

    <script src="http://code.angularjs.org/1.2.26/angular.js"></script>
    <script src="script.js"></script>
  </body>



参数1: 参数2: AsyncFunc:{{util.AsyncFunc(model.param1,model.param2)}


嗯,我认为这肯定不是最好的解决方案,如果您有其他方法,它将非常有用。

这是一个异步函数吗?它将返回false。。。。但在2秒后,它会将对象引用myObj.found更改为true。为了使其异步,请从中返回一个
$promise
。您能否演示如何在模板中使用控制器代码?什么是束缚?你只是在杀人。每个
$timeout
都会导致一个
$digest()
,每个
$digest()
都会重新计算所有角度表达式,从而为您的案例导致另一个`
$timeout
,依此类推。这意味着它只需到达
$digest()
iterations@Samir,你完全正确。“$timeout”导致“$digest()”。好吧,在我真正的问题中,我做的是一个“$http.get”,我也有同样的问题。我在问题和plunkr示例中用$http.get更改了$timeout:,那么,您有没有一个好的方法来实现它的示例?也许是承诺?这是一个异步函数吗?它将返回false。。。。但在2秒后,它会将对象引用myObj.found更改为true。为了使其异步,请从中返回一个
$promise
。您能否演示如何在模板中使用控制器代码?什么是束缚?你只是在杀人。每个
$timeout
都会导致一个
$digest()
,每个
$digest()
都会重新计算所有角度表达式,从而为您的案例导致另一个`
$timeout
,依此类推。这意味着它只需到达
$digest()
iterations@Samir,你完全正确。“$timeout”导致“$digest()”。好吧,在我真正的问题中,我做的是一个“$http.get”,我也有同样的问题。我在问题和plunkr示例中用$http.get更改了$timeout:,那么,您有没有一个好的方法来实现它的示例?也许是承诺?这是一个异步函数吗?它将返回false。。。。但在2秒后,它会将对象引用myObj.found更改为true。为了使其异步,请从中返回一个
$promise
。您能否演示如何在模板中使用控制器代码?什么是束缚?你只是在杀人。每个
$timeout
都会导致一个
$digest()
,每个
$digest()
都会重新计算所有角度表达式,从而为您的案例导致另一个`
$timeout
,依此类推。这意味着它只需到达
$digest()
iterations@Samir,你完全正确。“$timeout”导致“$digest()”。好吧,在我真正的问题中,我做的是一个“$http.get”,我也有同样的问题。我在问题和plunkr示例中用$http.get更改了$timeout:,那么,您有没有一个好的方法来实现它的示例?可能与承诺有关?另一个丑陋的问题是,当我们更改输入值时,http get执行2次。另一个丑陋的问题是,当我们更改输入值时,http get执行2次。另一个丑陋的问题是,当我们更改输入值时,http get执行2次。
<body>
    <div ng-controller="Ctrl1">
          <br/><br/>
          Param1:<input type="text" ng-model="model.param1" />
          Param2:<input type="text" ng-model="model.param2" />

        AsyncFunc: {{util.asyncFunc(model.param1, model.param2)}}
    </div>

    <script src="http://code.angularjs.org/1.2.26/angular.js"></script>
    <script src="script.js"></script>
  </body>