ng动态生成的html/ionic复选框内的更改不绑定

ng-change inside dynamically generated html/ionic checkbox not binding

本文关键字:绑定 复选框 动态 html ng ionic      更新时间:2023-09-26

我和我的团队一直在处理一个XML文件,并基于所述XML编写一个设置页面。这里的元素是动态生成的。请在下面找到元素生成的示例。

 settings.getToggle = function(label, def){var str1 = '<li class="item lighten orange">';
var str2 = label;  //get label from xml
return str1 + str2 + '<label class="switch orange">' +
                     '<input type="checkbox" ng-model="testmodel" class="switch-input" >' +
                     '<span class="switch-label" data-on="Aan" data-off="Uit"></span>' +
                     '<span class="switch-handle"  ></span></label></li>';};

这段小代码确保当XML文件说:"您必须显示一个togglebutton"时,会在设置页面中添加一个togetlebutton并相应地显示。可以有多个相同类型的按钮。在控制器中,我们调用以下代码:(settings.getToggle(…)

  $(this).find("setting[type='toggle']").each(function () {
                      var label = $(this).find("label").text();
                       var def = $(this).find("default");
                       $("div>.list").append(settings.getToggle(label, def));
                   });

到这里不是问题。html是完美生成的。

在这一点上,我们必须能够将一个处理程序附加到所述元素。这就是问题的开始。

在将ng更改添加到此具有离子布局的html5复选框后,甚至可以单击ng、ng模型,。。。你说出它的名字,代码似乎根本没有响应。

示例(html的剩余部分->第一个代码片段):

'<input type="checkbox" ng-click()="testmodel" class="switch-input" >'

与角度代码耦合(在工作的、经过测试的控制器中)

    .controller('SettingsController', function ($scope)
{
    $scope.testmodel = function(){
        alert("click");
    };

这种情况下不会弹出警报。有人知道怎么解决这个问题吗这是我最主要也是最重要的问题

推而广之,由于我对棱角分明的事物还比较陌生,我很难想象如何从那里前进。我曾想过为每个元素添加一个change监听器,然后以某种方式获取元素的名称(model?),并将它们放入json-var和localstorage中。有人有更具体的想法吗。实际上,我不知道在这一点上该怎么办。

最后,我想提前为发帖和角度上的错误道歉。我在这两方面都是初学者。

ng-click上不带()的情况下更改为此,并将其附加到函数名testmodel():

'<input type="checkbox" ng-click="testmodel()" class="switch-input" >'

请参阅plnkr。


如果你要使用ng-change指令,那么结合使用ng-model也需要:

<input type="checkbox" ng-model='this.checked' ng-change="testmodel()" class="switch-input" >

以及在控制器中的方法中:

$scope.testmodel = function() {
   alert(this.checked);
};

ng变化与ng模型示例plnkr。