修改指令 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 名称。
我有以下代码: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 名称。