0

我无法获取部分div的ng-click属性来触发我想要的功能,名为testDivClicked()连接ng-click到控制器功能

在我的应用程序控制器,我提供给部分路线称为test

(function() { 
    "use strict"; 

    angular 
     .module('myApp', ['ngRoute', 'ui.bootstrap', 'myApp.main', 'myApp.test']) 
     .config(config); 

    config.$inject = ['$routeProvider']; 

    function config($routeProvider) { 
     $routeProvider 
      .when('/', {templateUrl: '/partials/main.html', controller: 'MainController', controllerAs: 'vm'}) 
      .when('/test', {templateUrl: '/partials/test/test.html', controller: 'TestController', controllerAs: 'vm'}) 
      .otherwise({redirectTo: '/'}); 
    } 
})(); 

这里是test.html部分是被插入到父视图:

<div class="outer-holder test-outer-holder"> 
    <div class="middle-holder test-middle-holder"> 
     <div class="inner-holder test-inner-holder"> 
      <div class="test-container" ng-click="vm.testDivClicked('test-container')"> 
       <legend>Test</legend> 
      </div> 
     </div> 
    </div> 
</div> 

test控制器:

(function() { 
    "use strict"; 

    angular 
     .module("myApp.test") 
     .controller("TestController", TestController); 

    TestController.$inject = []; 

    function TestController() { 
     var vm = this; 

     function testDivClicked(msg) { 
      console.log("message:", msg); 
     } 
    } 
})(); 

当我clic k在最里面div,我想testDivClicked()记录我点击它。

我在这个设置中错过了什么,这将使我得到ng-click工作?

+0

试试这个'vm.testDivClicked =函数(MSG){执行console.log( “信息:” MSG):}' –

+0

能否请您提供一个plunker。 –

+0

为什么不使用角度$范围服务?我可以知道你的angularjs版本吗? –

回答

1

您应该写vm.testDivClicked = function(msg)而不是function testDivClicked。你声明了一个本地函数。

0

提供用于创建控制器的模块名称myApp.test是错误的。而是使用angular.module("myApp")

所以,你的测试控制器应

(function() { 
    "use strict"; 

    angular 
     .module("myApp") 
     .controller("TestController", TestController); 

    TestController.$inject = []; 

    function TestController() { 
     var vm = this; 

     function testDivClicked(msg) { 
      console.log("message:", msg); 
     } 
    } 
})(); 
0

正如前面由亚历山大说,功能testDivClicked功能不与vm(this)有关。所以它在dom中不被识别为vm.testDivClicked('test-container')

这里是修改部分。

function TestController() { 
     var vm = this; 

     vm.testDivClicked = function(msg) { 
      console.log("message:", msg); 
     } 
    }