Javascript 在原型中使用角度控制器
我的问题很简单 可以将角度控制器与原型一起使用吗Javascript 在原型中使用角度控制器,javascript,angularjs,Javascript,Angularjs,我的问题很简单 可以将角度控制器与原型一起使用吗 'use strict'; var EventController = function(scope, EventModel) { this.scope = scope; this.EventModel = EventModel; }; EventController.prototype = { create: function() { this.scope.create = function(
'use strict';
var EventController = function(scope, EventModel) {
this.scope = scope;
this.EventModel = EventModel;
};
EventController.prototype = {
create: function() {
this.scope.create = function() {
this.EventModel.Model.insert()
.then(function(result) {
});
};
},
retrieve: function() {
var that = this;
this.EventModel.Model.find()
.then(function(result) {
that.scope.events = result;
});
},
retrieveOne: function(id) {
this.EventModel.Model.findOne(id)
.then(function(result) {
console.log(result);
});
},
update: function() {
this.EventModel.Model.update()
.then(function(result) {
});
},
delete: function() {
this.EventModel.Model.remove()
.then(function(result) {
});
}
};
module.exports = function(adminApp) {
adminApp
.controller('EventController', ['$scope', 'EventModel', function(scope, EventModel) {
return new EventController(scope, EventModel);
}]);
};
我正在使用Browserify,这就是为什么我在期末考试中有这个模块
我希望以这种方式使用控制器,并获得方法,就像它是原型中对象的名称一样
我有什么办法可以做到吗?你绝对可以。这是一个演示,我使用与您类似的代码制作 其神奇之处在于Angular 1.2.0中引入的“控制器为”语法。 演示中有三个按钮。其中一个按照您的要求在控制器本身上使用原型方法,另外两个说明您可以继续使用控制器,因为您可能已经习惯了,方法是在标记中完全使用范围,并在控制器中提供范围方法 Javascript 加成
控制器为:
做一件事!
范围:
i=={{i}
使用范围的扩展方法
j=={{j}
太棒了!我可以问更多的信息吗?这在幕后是如何运作的?我不了解范围。j*=2;这是一种非常人为的方式来说明两点。该方法工作的事实表明,您可以添加范围方法(注意,它不是通过ctrl
调用的)。实际范围j*=2代码>行显示您可以像正常操作一样操作范围变量(具体来说,就是将j
乘以2)。所有这些都与您最初的问题无关,但只是表明Controller as
语法为您提供了使用范围
的灵活性,就像在1.2之前一样。对您来说,重要的部分是ng controller=“TestController as ctrl”
和ng click=“ctrl.doAThing()”
。
'use strict';
var TestController = function(scope) {
this.scope = scope;
};
TestController.prototype = {
doAThing: function() {
alert('This is a thing');
}
};
angular.module('testApp', [])
.controller('TestController', ['$scope', function(scope) {
if(typeof(scope.extension) === 'undefined')
scope.extension = function() {
scope.j *= 2;
};
return new TestController(scope);
}]);
<div ng-app="testApp" ng-controller="TestController as ctrl" ng-init="i = 0; j = 1;">
<h1>Controller as:</h1>
<button ng-click="ctrl.doAThing()">Do a thing!</button>
<h1>Scope:</h1>
<button ng-click="i=i+1">i == {{i}}</button>
<h1>Extension method using scope</h1>
<button ng-click="extension()">j == {{j}}</button>
</div>