我的页面上有一个按钮,用于修改模型(添加一个新对象)。控制器中的角度ng-click范围调用函数
我希望我可以在HTML中做到这一点,只需将新对象推到数组上,但看起来我可能需要调用控制器来完成它。出于某种原因,虽然它无法在我的控制器中找到该功能。
这里是我的按钮:
<button ng-click="addCarton()">Add a carton</button>
下面是此页面上的(几个)控制器之一:
myController.$inject = ['$http', '$uibModal', 'cart'];
function myController($http, $uibModal, cart) {
var vm = this;
vm.addCarton = function() {
console.log("carton added!");
});
这确实什么都没有。没有错误,只是按钮什么也不做。 我别无选择,只能添加$ scope依赖项。 这工作:
myController.$inject = ['$http', '$uibModal', 'cart', '$scope'];
function myController($http, $uibModal, cart, $scope) {
var vm = this;
$scope.addCarton = function() {
console.log("carton added!");
});
那么,为什么用VM打扰=,如果我不能使用它?
-
我应该说还有页面上的其他点击事件,但我没有他们是如何操作的任何想法:
<button type="button" ng-click="summaryModalVm.cancel()">Cancel</button>
function myController($http, $uibModal, cart, $scope) {
vm.dimensionsChoose = function (size) {
$http.post('/api/shipping/estimate', cart).then(function(response) {
var modalInstance = $uibModal.open({
controllerAs: 'summaryModalVm',
[更新]
我的路由器:
.state('layout.cart', {
url: '/cart',
templateUrl: '/Content/js/apps/store/views/cart.html',
controller: 'cartController',
controllerAs: 'cartVm',
data: { pageTitle: 'Cart' }
})
我的第二次尝试在一个按钮:
<button ng-click="cartVm.addCarton()" type="button">Add a carton</button>
我的第二次尝试在控制器:
function cartController($http, $uibModal, Cart, CartObservable) {
var vm = this;
vm.addCarton = function() {
console.log(":)");
};
我发现了一个类似的问题,也许可以帮助你,链接[这里](HTTP://计算器。com/questions/11605917/this-vs-scope-in-angularjs-controllers) – Ronald
页面上的其他单击事件可以正常工作,因为它们正确地使用**控制器作为**语法和点符号来引用控制器功能。查看我的答案,了解如何让您的addCarton函数正常工作。 – Lex