2016-03-20 9 views
-1

ng-change、ng-clickはディレクティブでのみ選択しています 誰か助けてくれますか?ディレクティブのselectでng-changeが機能しません

HTML

ディレクティブ:

myApp.directive("selectList", function(){ 
return function (scope, element, attr) { 
    var data = scope.items; 
    if(angular.isArray(data)){ 
     var selectElem = angular.element("<select>").attr('ng-change', 'test()'); 
     element.append(selectElem); 
     for(var i = 0; i < data.length; i++){ 
      var optionElem = angular.element("<option>"); 
      selectElem.append(optionElem.text(data[i].name)); 
     } 
    } 
} 

})。

コントローラ:

var myApp=angular.module('myApp', []); 
myApp.controller('phoneController', function($scope) { 

$scope.items = [ 
    { name: 'Nokia Lumia 630' 
    }, 
    { name: 'Xiaomi Mi5' 
    } 
]; 

$scope.selectedItem = $scope.items[0].name; 

$scope.select = function(name){ 
    $scope.selectedItem = name; 
}; 
$scope.test = function(){ 
    alert("test"); 
}; 

})。

ここは初心者です。 角度バージョン1.3 多分それはバージョンによって異なります。今バージョンを変更することはできません

+0

問題を少し良く説明できますか?一見すると、指示コードに動的に変更を追加しています。そのように縛られることはできません。 – Milan

+0

どのように変更を動的に追加できますか? –

答えて

0

角度バインディングで要素を挿入する場合は、$ compile関数を使用する必要があります。これをテストしなかったが、正しい方向だ。

myApp.directive("selectList", function ($compile) { 
    function link(scope, element, attr) { 
     var data = scope.items; 
     if (angular.isArray(data)) { 
      var selectElem = $compile('<select ng-change="text()"></select>'); 
      element.append(selectElem); 
      for (var i = 0; i < data.length; i++) { 
       var optionElem = angular.element("<option>"); 
       selectElem.append(optionElem.text(data[i].name)); 
      } 
     } 
    } 

    return { 
     link: link 
    }; 
}); 
+0

それが動作しない しかし、私は解決策を検索します –

関連する問題