2015-11-03 27 views
0

我做了一個自定義的角度指令,像這樣第二次:角定製指令有多個問題 - 不更換工作:真,不會觸發

HTML - mydirective(data-datasource="mydirectivedata", data-updatefn="mydirectiveupdate")

控制器 -

$scope.mydirectivedata = //array of objects from API service call using $http 
$scope.mydirectiveupdate = function(a, b) {} 

指令 -

.directive('mydirective', function() { 
      return { 
       restrict: 'E', 
       replace: true, 
       scope: { 
        mydirectivedata: '=', 
        mydirectiveupdate: '&', 
       }, 
       controller: function($scope) { 
        $scope.updatefunction = function(id, type) { 
         $scope.mydirectiveupdate()(id, type); 
        }; 
       }, 
       templateUrl: '/partials/mydirective.html' 
      } 
     }) 

部分 -

<li data-ng-repeat="type in datasource.types"> 
    <input id="{{type.id}}" type="radio" name="{{$parent.datasource.id}}" src="" alt="{{$parent.datasource.id}}" aria-label="type.name" checked ng-value="true" data-ng-class="radio-selector" data-ng-model="type.isDefault" data-ng-change="updatefunction($parent.datasource.id,type)"> 
    <label for="{{type.id}}"><span style="background-image: url(undefined)"></span> 
    <h2 data-ng-bind="type.name">type.name</h2> 
    <p data-ng-bind="{{type.price}} | number :2" class="price">{{type.price}}</p> 
    <p data-ng-bind="type.description">type.description</p> 
    </label> 
</li> 

我的要求是:1。 當選擇輸入單選按鈕,觸發updatefunction,並反過來mydirectiveupdate函數傳遞所需的參數

的問題是:1。 如果我使用replace: true在我的指令中,$scope.updatefunction本身沒有被觸發 2.如果我不使用replace: true,更新函數會被觸發,但每輸入一次點擊只會觸發一次。第二次點擊輸入時,該功能不會被觸發!

幫助!

+1

建議您在[plunker](http://plnkr.co/edit/?p=catalogue)中進行工作演示。顯示的一些代碼在範圍屬性和html屬性之間不匹配。更何況'alt'和'src'對於無線電來說也沒有意義 – charlietfl

回答

0

我不明白你的文章的第二行:

HTML - mydirective(data-datasource="mydirectivedata", data-updatefn="mydirectiveupdate")

我猜你的意思是這樣:

<mydirective data-mydirectivedata="mydirectivedata" data-mydirectiveupdate="mydirectiveupdate" /> 

我也不知道什麼是

部分 -

我假定這是您的指令模板。如果是這樣,你不能使用replace: true,因爲你沒有父DOM元素。將整個 <li data-ng-repeat="type in datasource.types">...</li>代碼放入<ul>標籤內。

一旦你有數據源(這個HTML和部分),一旦這是mydirectivedata(指令定義)。查看您的示例,將所有這些考慮在內。