5

かなりの数の投稿を読んだ後、これはうまくいくはずだと判断しました:

vm.model.myChange = function(element) {
  console.log(element);
}

.. および vm.fields で:

{
"key": "transportation",
"type": "select",
"templateOptions": {
  "label": "How do you get around in the city",
  "valueProp": "name",
  "onChange": "model.myChange()", // ADDED
  "options": [{
    "name": "Car"
  }, {
    "name": "Helicopter"
  }]
}

実際には、これは何の効果もありません。つまり、関数は呼び出されません。生成されたフォームには、関数への参照も含まれていませんでした。

これを行う方法の実例が見つかりませんでした。助言がありますか?

どうも。ポール

4

2 に答える 2

3

次の 3 つのいずれかを実行できます。

templateOptions: {
   onChange: function($viewValue, $modelValue, $scope) {
   //implement logic here
   };
}

また

templateOptions: {
   onChange: callMe()
},
controller: function($viewValue, $modelValue, $scope) {
    $scope.callMe = function() {
    //implement logic here
    };
}

また

    templateOptions: {
       onChange: ''
    },
    expressionProperties : {
       'templateOptions.onChange': function($viewValue, $modelValue, $scope) {
       //implement logic here
       };
   }
于 2016-12-14T13:54:34.637 に答える
1

これを処理した 1 つの方法は、json フィールドをサービスから提供することです。これにより、関数を快適に呼び出すことができます。

注意:これはサービスまたは工場から提供されます

var getFields = function () {
    var fields = [
        {
           "key": "transportation",
           "type": "select",
           "templateOptions": {
           "label": "How do you get around in the city",
           "valueProp": "name",
           "onChange": "function(){//Implement your logic}"
           "options": [{
                "name": "Car"
           }, {
             "name": "Helicopter"
           }]
       }
   ] 
};
于 2016-02-22T16:36:29.603 に答える