我的頁面上有一個按鈕,用於修改模型(添加一個新對象)。控制器中的角度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