Page 72 - AngularJS权威教程
P. 72

52  第 8 章  指令简介


             象只能在指令的方法中或指令的模板字符串中使用:

                 template: '<div>\
                     we have access to {{ someProperty }}\
                     </div>',
                 controller: function($scope) {
                     //指令可以有它自己的控制器,
                     // 那种情况下我们可以
                     // => 错误!!!
                     $scope.someProperty === "needs to be set";
                 }
                 错误?
                 目前为止,我们一直忽略了一个细节。实际上不能像上面的例子那样,在作用域对象内部直
             接设置someProperty属性。

                 scope: {
                     // 这样行不通
                     someProperty: 'needs to be set'
                 }
                 实际上要在DOM中像之前提到过的那样,像给函数传递参数一样,通过属性来设置值:

                 <div my-directive
                     some-property="someProperty with @ binding">
                 </div>
                 现在,我们在作用域对象内部把someProperty值设置为@这个绑定策略。这个绑定策略告诉
             AngularJS将DOM中some-property属性的值复制给新作用域对象中的someProperty属性:

                 scope: {
                     someProperty: '@'
                 }
                 注意,默认情况下someProperty在DOM中的映射是some-property属性。如果我们想显式
             指定绑定的属性名,可以用如下方式:
                 scope: {
                     someProperty: '@someAttr'
                 }
                 在这个例子中,被绑定的属性名是some-attr而不是some-property。

                 <div my-directive
                     some-attr="someProperty with @ binding">
                 </div>

                 现在,当我们在指令模板或控制器中(之前的例子这样做过)访问someProperty时,会得
             到DOM属性中的值的副本:
                 template:'<div>\
                 we have access to {{ someProperty }}\
                     </div>',
                     controller: function($scope) {
                     // 指令可以有它自己的控制器,在那种情况下,我们可以将
                     // $scope.someProperty设置成"someProperty with @ binding"
                 }
   67   68   69   70   71   72   73   74   75   76   77