2014-09-12 50 views
0

我用一個獨立的範圍構建了一個簡單的指令,但它在版本1.0.1中工作正常,但在1.3.0中工作正常。問題假設是什麼?Angular 1.0.1 vs 1.3.0 for directives

角1.0.1版本例如:http://jsfiddle.net/k2rnavrg/

角1.3.0版本例如:http://jsfiddle.net/k2rnavrg/2/

var myModule = angular.module('myModule', []) 
    .directive('qImg', function() { 
    return { 
     restrict: 'E', 
     scope: { 

      m: '=mF' 

     } 


    }; 
}) 
    .controller('MyCtrl', ['$scope', function ($scope) { 
    $scope.foo = 'Hello Samitha!'; 

}]); 
+1

不是它改變你的問題,而是你鏈接到版本1.2.0不是1.3.0 – Joseph 2014-09-12 17:26:20

+0

版本1.2.0中的相同問題 – underscore 2014-09-12 17:28:04

+0

什麼不工作?你的問題描述不應該要求人們測試2個不同的版本,看看他們是如何工作的,並找出期望的行爲 – charlietfl 2014-09-12 18:07:21

回答

2

你千萬不要混淆元素指令。

<q-img m-f="foo"> 

這是還具有qImg指令附加到它q-img元件。此指令創建的隔離範圍只能由該指令訪問,而不能訪問其他指令,如ngModel指令。

<div ng-controller="MyCtrl">{{foo}} 
    <q-img m-f="foo"> 
     <input type='text' ng-model="m"> 
    </q-img> 

ng-Controller創建用於由這裏看到所有指令,除了指令qImg,使用的分離物範圍的範圍。

如果你想ngModel指令訪問隔離範圍,那麼你就需要把input成模板,而不是直接進入DOM:

var myModule = angular.module('myModule', []) 
    .directive('qImg', function() { 
    return { 
    restrict: 'E', 
    template: '<input type="text" ng-model="m">', 
    scope: { 
     m: '=mF' 
    } 
    }; 
}) 

<div ng-controller="MyCtrl">{{foo}} 
    <q-img m-f="foo"></q-img> 
</div> 

看來,行爲與1.2改變。