修改指令 Angular 中的出厂值

Modifying factory value in directive Angular

我有以下代码:http://codepen.io/Andarius/pen/Ggryge

当用户绘制 'crop_area' 时,不应再禁用 crop 按钮。
为什么绘图时值 no_crop_area(来自 Image 工厂)没有更新?
是范围问题吗?

此外,我是 AngularJS 的新手,想知道将工厂传递给控制器​​(如果有的话)的最佳做法是什么

给定一个工厂:

myApp.factory('myFactory', function () {
    return {foo:{bar:2}};
});  

这样做比较好:

myApp.controller('myCtrl', ['myFactory',function (myFactory) {
    var self = this;
    self.foo = myFactory;
    self.bar = myFactory.bar;
}]);

myApp.controller('myCtrl', ['myFactory',function (myFactory) {
    var self = this;
    self.foo = myFactory;
    self.bar = self.foo.bar;
}]);

我已经分叉了你的代码。这是一个工作的。 http://codepen.io/anon/pen/qERpew?editors=101

按钮未启用,因为您正在使用 javascript 事件处理程序进行与创建裁剪区域相关的所有处理,因此与 $scope 相关的代码(ie.angular 相关),不会生效。要使它们生效,您必须将与 $scope 相关的代码包装到 $scope.$apply(function(){ // Your $scope variable update code.}).

PS:按照惯例,您不应在该使用范围的 directive.Instead 内使用 $scope 名称。