将对象传递给动态创建的指令

时间:2015-06-01 09:39:56

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试做一些简单的事情,将对象传递给动态创建的指令。简而言之,我使用了一个按钮指令,在单击时,使用$ compile生成一个包含指令元素的模板。我想传递一个对象作为该指令的属性。

angular.element(document.getElementById('dirContainer')).append($compile("<my-dynamic-directive name='data.name' data='data'></my-dynamic-directive>")(scope));

适用于Angular 1.2的小提琴,但不适用于Angular 1.3!我找不到任何有关此更改的相关文档。

jsfiddle:http://jsfiddle.net//weso9huo/(外部资源中的Angular dep)

编辑小提琴是1.2。将其更改为1.3会破坏它。

编辑2 使用Angular 1.3的这个小提琴http://jsfiddle.net/7jjfadun/不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您收到以下错误

  

错误:[ng:areq]参数&#39; MainCtrl&#39;不是一个功能,未定义   http://errors.angularjs.org/1.3.15/ng/areq?p0=MainCtrl&p1=not%20a%20function%2C%20got%20undefined

Angular 1.3+不再支持全局范围内的控制器声明。 除了你的代码有效

myApp.controller('MainCtrl', function ($scope) {
    $scope.data = {
        id: 666,
        name: "Fabruce"
    }
});

DEMO

function MainCtrl($scope) {
    $scope.data = {
        id: 666,
        name: "Fabruce"
    }
}

MainCtrl.$inject = ['$scope'];
myApp.controller('MainCtrl', MainCtrl);

DEMO 2