2
我有一個控制器,該控制器添加了一個函數,但無法獲得通過在錨點上單擊來調用的函數。我看了類似的帖子,但不能真正看到我可能會失蹤。它好像控制器功能不可見?控制器功能沒有從ng-click中調用
模塊和控制器:
var commonModule = angular.module('common', ['ngRoute', 'ng.ckeditor']);
var mainModule = angular.module('main', ['common']);
//mainModule.config(function ($routeProvider, $locationProvider) {
// $locationProvider.html5Mode(true);
//});
commonModule.factory('viewModelHelper', function ($http, $q, $window, $location) {
return MyApp.viewModelHelper($http, $q, $window, $location);
});
commonModule.factory('validator', function() {
return valJs.validator();
});
mainModule.controller("rootViewModel",
function ($scope, $http, $q, $routeParams, $window, $location, viewModelHelper, $rootElement) {
//test
console.log("creating controller");
var self = this;
viewModelHelper.apiGet('api/PageContent/1', null,
function (result) {
$scope.htmlEditor = result.data;
});
$scope.ToggleEditor2 = function() {
//test
console.log("hello");
if ($scope.editorVisible == true) {
$scope.editorVisible = false;
}
else {
$scope.editorVisible = true;
}
}
});
控制器在根級別的頁面所引用:
其中在使用ASP.Net MVC因爲即時通訊這種情況下,是在我的_layout.cshtml
<body data-ng-app="main" data-ng-controller="rootViewModel">
在一個被加載的(mvc)視圖中,我有一個帶有ng-click的按鈕,它調用了ToggleEditor2函數,但它從來沒有調用過。無法得到一個斷點,在鉻開發控制檯中打,我沒有看到寫入日誌的任何東西。
<input type="button" ng-click="ToggleEditor2()" value="test me" />
更新:
如果我換一個DIV錨並有指定「rootviewModel」控制器,日誌信息被寫入。嗯 - 有人告訴我它與範圍有關嗎?
<div data-ng-controller="rootViewModel">
<input type="button" ng-click="ToggleEditor2()" value="test me" />
</div>
你確定你的應用程序/模塊只被稱爲「main」而不是「mainModule」,因爲變量名是在你的javascript中聲明的? 「mainModule.controller(......)」。我之前做過 – mhodges
是的,我更新了上面的帖子以包含使用 – bitshift
的im定義。可能 - 使用$ scope不是在控制器和視圖之間來回傳遞數據的最佳方式。使用controllerAs語法是解決方案。這裏是關於新語法的一個很好的資源:https://toddmotto.com/digging-into-angulars-controller-as-syntax/ – mhodges