【发布时间】:2014-01-04 13:37:18
【问题描述】:
由于我的程序的性质,我需要将函数放在作用域上并在指令的链接函数和控制器之间共享,就像这样..
.controller("controller", function($scope, $location, $timeout, model) {
//irrelevant code
$scope.addObject(draggables[i]);
};
.directive("designCanvas", function($timeout) {
return {
restrict: "A",
link: function($scope, element) {
$scope.addObject = function(draggable) {
// irrelevant code
}
}
}
}
当我调用这个函数时,我得到'$scope.addObject 不是一个函数'。
我的问题是控制器在 angularJS 评估链接函数之前执行,因为当我使用 $timeout 将其延迟几秒钟时,函数调用工作正常
所以我的问题是,我怎样才能让链接函数的内容先编译?
【问题讨论】:
-
编译依赖于 HTML 图 (DOM)。如果控制器是在指令的父级上定义的,它将在链接发生之前被实例化。为什么不能将 addObject 添加到控制器。或查看
if($scope.addObject) $scope.addObject(draggables[i]); -
感谢您的宝贵时间 :) 我在指令中使用 easelJS 来操作画布,它的变量是链接函数的本地变量,因此我无法在控制器中进行修改。我也在尝试创建一些分离并具有更结构化的 MVC 格式.. if($scope.addObject) 可以工作,但不太符合我的目的,因为无论如何我都需要执行该函数
标签: angularjs hyperlink angularjs-directive angularjs-scope