Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 如何从控制器函数中获取$scope?_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 如何从控制器函数中获取$scope?

Javascript 如何从控制器函数中获取$scope?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有以下问题:我在控制器中有一个函数,该函数决定$scope.name的值 app.controller('myController', ['$scope', function($scope) { function myFunction() { $scope.name = 'myName'; } document.getElementById('my-id').addEventListener("click", myFunction); }]) 由于多种原因,我无

我有以下问题:我在控制器中有一个函数,该函数决定$scope.name的值

app.controller('myController', ['$scope', function($scope) {
    function myFunction() {
       $scope.name = 'myName';
    }
document.getElementById('my-id').addEventListener("click", myFunction);
}])
由于多种原因,我无法使用ng click更新: 我无法使用ng click,因为库和。我想添加自定义FB共享,如果我使用ng,单击它将关闭Photosweep打开的图像请参见示例。打开图像并单击左上角的自定义共享按钮

注意,即使我在这里使用这个示例,它也不会将我的$scope.name绑定到html

如果我试着记录这个值,它就像一个符咒,例如

console.log($scope.name); //will work perfectly
在html中,它不会绑定以下值:

<div ng-controller="myController">
<button id="my-id">
   <p>{{name}}</p>
</button>
</div>

{{name}}


对于主题解决方案,问题在于普通事件侦听器将绕过摘要周期。这意味着您的
$scope
正在更新,但Angular不知道,因为触发更新的事件不在Angular的雷达上,因此Angular不会更新模板。此问题的(坏的)解决方案是使用强制触发摘要


但是再次强调,这是一个非角度的解决方案,如果你解决了
ng click
的任何问题,你会过得更好。

对于主题解决方案,问题是普通的事件监听器将绕过摘要循环。这意味着您的
$scope
正在更新,但Angular不知道,因为触发更新的事件不在Angular的雷达上,因此Angular不会更新模板。此问题的(坏的)解决方案是使用强制触发摘要


但是再次强调,这是一个非角度的解决方案,如果您解决了
ng单击
时遇到的任何问题,您的情况会好得多。

您不应该从控制器直接与DOM交互(即,不
document.getElement…
)。这个问题本身是可以回答的(正在绕过摘要周期),但要得到一个真正有角度的答案,你需要改变你的方法。为此,我们需要知道您在
ng click
中遇到了什么问题。要更新angulars域之外的范围(本机click处理程序,jQuery回调)使用
$scope.$apply
,但正如@deceze所说的那样,您这样做是错误的。我建议您打开一个新问题,详细说明
ng click
和Photosweep之间的问题;问题到底是什么太模糊了,但我很确定没有理由不能解决。您不应该从控制器直接与DOM交互(即no
document.getElement…
)。这个问题本身是可以回答的(正在绕过摘要周期),但要得到一个真正有角度的答案,你需要改变你的方法。为此,我们需要知道您在
ng click
中遇到了什么问题。要更新angulars域之外的范围(本机click处理程序,jQuery回调)使用
$scope.$apply
,但正如@deceze所说的那样,您这样做是错误的。我建议您打开一个新问题,详细说明
ng click
和Photosweep之间的问题;问题到底是什么太模糊了,但我很确定没有理由不能解决。