在指令属性中传递对象-Serialised&孤立的问题

时间:2016-02-25 14:48:20

标签: javascript angularjs json angularjs-directive

我想将简单对象从控制器发送到简单指令 ...

这是对象的一部分(控制器):

        var SQLWizard = function(){
            this.steps = {
                query: {
                    title: _('Query'),
                    badge: '2',
                    value: null,
                    onValidation: function () {
                        console.log('query step over');
                    }
                },
                //other properties
            };
            this.currentStep = 1;
        };
        $scope.sqlWizard = new SQLWizard();

html

<accordion close-others="oneAtATime"  accordion-wizard="{{sqlWizard}}">
  

accordion是bootstrap中的angular-ui元素

(简单)指令

app.directive('accordionWizard',function (){
return {
        restrict: 'A',
        link: function ($scope, element, attrs) {
             //some stuff here
            }
       }
    });

你可以看到没有什么特别之处,但我无法理解两件事:

  1. 当在指令中捕获对象时,我看到我的对象已被序列化,并且已定义的函数(onValidation)消失了!为什么?
  2. 为什么我不能将所有$ scope变量(在控制器中定义)都放到我的指令中,因为该指令不使用隔离范围??
  3. 非常感谢...

1 个答案:

答案 0 :(得分:0)

  1. 对于序列化数据是因为{{}}。这会将数据字符串化为指令的范围。
  2. 隔离范围与第一个原因有关,因为我已将数据作为字符串传递,因此我无法修改它(只是它的副本)。然后我隐含地告诉指令我的范围是孤立的