Angularjs 以编程方式更改模型时不更新选择框

Angularjs 以编程方式更改模型时不更新选择框,angularjs,jquery-mobile,drop-down-menu,jquery-mobile-popup,Angularjs,Jquery Mobile,Drop Down Menu,Jquery Mobile Popup,我在弹出窗口中有一个选择框,可以毫无问题地指定初始值。但是,当我打开弹出窗口时,我想更改选择框的值。问题是,尽管它“勾选”了更改的值,但除非我再次打开并关闭弹出窗口,否则它不会显示在选择框中。有什么方法可以更新选择框,以便在我第一次打开弹出窗口时显示指定的值 注意:在制作中,我使用angularJs填充选择框,并使用jqmobile渲染它 这是小提琴和代码: 是否可以为弹出窗口创建另一个控制器并在其中设置所选选项 HTML 如果使用JQuery函数(.option())更改选择菜单的选择值,它会

我在弹出窗口中有一个选择框,可以毫无问题地指定初始值。但是,当我打开弹出窗口时,我想更改选择框的值。问题是,尽管它“勾选”了更改的值,但除非我再次打开并关闭弹出窗口,否则它不会显示在选择框中。有什么方法可以更新选择框,以便在我第一次打开弹出窗口时显示指定的值

注意:在制作中,我使用angularJs填充选择框,并使用jqmobile渲染它

这是小提琴和代码:


是否可以为弹出窗口创建另一个控制器并在其中设置所选选项

HTML


如果使用JQuery函数(
.option()
)更改
选择菜单的选择值,它会正确更新选择框

Ng重复解决方案:

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.ccEditorDefaultComparators = ["=","!="];
    $scope.ccEditorFcComparator = "!=";

  $scope.openPopup = function()
  {
    $('#fcComparator').selectmenu('refresh');
    $('#mypopup').popup();
    $('#mypopup').popup('open', { y: 0 });
    console.log("should switch to = now");
        $('#fcComparator').val("=");
        $scope.ccEditorFcComparator = "=";
        //this makes it work the second time you open the popup
    $('#fcComparator').selectmenu('refresh');
  }
});

Ng选项解决方案:

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.ccEditorDefaultComparators = ["=","!="];
    $scope.ccEditorFcComparator = "!=";

  $scope.openPopup = function()
  {
    $('#fcComparator').selectmenu('refresh');
    $('#mypopup').popup();
    $('#mypopup').popup('open', { y: 0 });
    console.log("should switch to = now");
        $('#fcComparator').val("=");
        $scope.ccEditorFcComparator = "=";
        //this makes it work the second time you open the popup
    $('#fcComparator').selectmenu('refresh');
  }
});

注意:您还需要单独分配ng模型变量,以使此修复生效

JS:

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.ccEditorDefaultComparators = ["=","!="];
    $scope.ccEditorFcComparator = "!=";

  $scope.openPopup = function()
  {
    $('#fcComparator').selectmenu('refresh');
    $('#mypopup').popup();
    $('#mypopup').popup('open', { y: 0 });
    console.log("should switch to = now");
        $('#fcComparator').val("=");
        $scope.ccEditorFcComparator = "=";
        //this makes it work the second time you open the popup
    $('#fcComparator').selectmenu('refresh');
  }
});
参考文献:

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.ccEditorDefaultComparators = ["=","!="];
    $scope.ccEditorFcComparator = "!=";

  $scope.openPopup = function()
  {
    $('#fcComparator').selectmenu('refresh');
    $('#mypopup').popup();
    $('#mypopup').popup('open', { y: 0 });
    console.log("should switch to = now");
        $('#fcComparator').val("=");
        $scope.ccEditorFcComparator = "=";
        //this makes it work the second time you open the popup
    $('#fcComparator').selectmenu('refresh');
  }
});

  • 我需要将模型设置为初始条件($scope.ccEditorFcComparator=“!=”;),然后在弹出时将其设置为“=”。此解决方案是否可以使用工厂或服务将“!=”的初始ccEditorFcComparator值从“myCtrl”控制器传输到第二个“myPopup”控制器?基本上,我需要根据“myCtrl”中设置的初始值确定弹出选择框的值,例如,如果初始值为“!=”,则将弹出框设置为“=”。您的小提琴不工作,弹出框显示“!=”而非“=”@AKMorris更新了我的答案,请检查:)虽然这是一个答案,但对我来说仍然没有用。我需要使用angularJs ng选项(按照我的原始代码)来填充选择框,这意味着我不能像你那样硬编码标签。@Akmoris更新了我的答案!太好了,现在可以用了。必须分配两次值感觉不太好,但这是我目前必须处理的所有问题。通过检查
    select
    我看到两个选项都在标记“selected=”selected中
    var app = angular.module('myApp', []);
    
    app.controller('myCtrl', function($scope) {
        $scope.ccEditorDefaultComparators = ["=","!="];
        $scope.ccEditorFcComparator = "!=";
    
      $scope.openPopup = function()
      {
        $('#fcComparator').selectmenu('refresh');
        $('#mypopup').popup();
        $('#mypopup').popup('open', { y: 0 });
        console.log("should switch to = now");
            $('#fcComparator').val("=");
            $scope.ccEditorFcComparator = "=";
            //this makes it work the second time you open the popup
        $('#fcComparator').selectmenu('refresh');
      }
    });