2017-04-16 61 views
0

我用新角度,现在我遇到了一些问题,火...NG-点击不具有功能

所以我们可以说我有一个名为ViewModelController控制器和我用controlleras当我定义为航线如下:enter image description here

而且在我的模板我刚才difened 2个格,其单独的容器分为两个部分:

<div id='viewleft' class="divleft col-md-5"></div> 
<div id='viewright' class="col-md-7 divright"></div> 

而在ViewModelController,我有一些代码加载控制器时,呈现模板。 现在的问题是,我把所有元素放在一起的ng-click不会触发,我真的不知道问题出在哪里。

我试过像下面这样的东西,但它不起作用。

var content1 = '<ul><li><button id ="b1" ng-click="vmCtrl.cprint($event.target)">123</button></li><ul>'; 
    $("#viewleft").html(content1); 

有人可以帮助我吗?预先感谢你,祝福。

回答

0

你必须编译这个网站,使角码将工作

$compile($("#viewleft").contents())(scope); 

或更好的使用该编译HTML时,其价值变化的指令。

app.directive('compile', ['$compile', function ($compile) { 
     return function (scope, element, attrs) { 
      scope.$watch(
       function (scope) { 
        // watch the 'compile' expression for changes 
        return scope.$eval(attrs.compile); 
       }, 
       function (value) { 
        // when the 'compile' expression changes 
        // assign it into the current DOM 
        element.html(value); 

        // compile the new DOM and link it to the current 
        // scope. 
        // NOTE: we only compile .childNodes so that 
        // we don't get into infinite loop compiling ourselves 
        $compile(element.contents())(scope); 
       } 
      ); 
     }; 
    }]); 

在控制器,你可以asssign HTML到范围变量

$scope.template= '<ul><li><button id ="b1" ng-click="vmCtrl.cprint($event.target)">123</button></li><ul>'; 

和视图,您可以添加

<div id='viewleft' class="divleft col-md-5" compile="template"></div> 

您可以参考this文档为$编译。

+0

嗨,谢谢你的回答。如果我使用控制器作为语法,即vmCtrl而不是范围,我应该在编译指令的代码中做任何更改吗?或者只是没有改变就可以使用它?对不起有点讨厌:页。 – ywy9876

+0

我不这么认为,但你必须测试自己:) –

+0

似乎它的工作,非常感谢你! – ywy9876