我有以下代码: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;
}]);
答案 0 :(得分:0)
我已经分叉了你的代码。这是一个有效的工作。 http://codepen.io/anon/pen/qERpew?editors=101
按钮未启用,因为您正在使用javascript事件处理程序执行与创建裁剪区域相关的所有处理,因此与$ scope(即相关的)相关的代码将不会生效。要使它们生效,您必须将与$ scope相关的代码包装到$scope.$apply(function(){ // Your $scope variable update code.})
。
PS:根据惯例,你不应该在指令中使用$ scope name。而不是使用范围。