Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从角度控制器更新标签文本_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

Javascript 无法从角度控制器更新标签文本

Javascript 无法从角度控制器更新标签文本,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,HTML页面上有一个锚定标记和一个选择下拉列表,下拉列表绑定到angularjs控制器的范围变量 功能: 每当下拉列表的选定值更改时,它都应该反映在锚定标记文本中 问题:控制器首次初始化时,下拉列表中的值已设置,但标签的文本未填充 代码如下: 角度代码: 在AController.js中 init = function() { $scope.month = {'val': ''}; // some intermediate code which populates month $

HTML页面上有一个锚定标记和一个选择下拉列表,下拉列表绑定到angularjs控制器的范围变量

功能: 每当下拉列表的选定值更改时,它都应该反映在锚定标记文本中

问题:控制器首次初始化时,下拉列表中的值已设置,但标签的文本未填充

代码如下:

角度代码: 在AController.js中

init = function() {
  $scope.month = {'val': ''}; 
  // some intermediate code which populates month

  $("#element-id").val($scope.month.val);

  var i = $("#element-id").closest(".element-panel");
  var t = i.find(".element-label");
  t.text(element.children(":selected").text());
}

init();
HTML页面:

<div class="element-panel">
  <a class="select-label element-label" id="">Month</a>
  <select id="element-id" ng-model="month.val">
    <option value="" style="display:none;"></option> 
    <option value="1">January</option>
    <option value="2">February</option>
        <!-- more options ... -->
    <option value="12">December</option>
  </select>
</div>
$element-id.val应该是不必要的,因为您已经在HTML中将它与ng model=month.val绑定

为什么不把你的标签改成

{{month.val}}

哪一个应该为你装订?避免像您正在尝试的那样从控制器操纵DOM被认为是最佳实践。不过,您可以改用指令。

$element-id.val应该是不必要的,因为您已经在HTML中将它与ng model=month.val绑定

为什么不把你的标签改成

{{month.val}}

哪一个应该为你装订?避免像您正在尝试的那样从控制器操纵DOM被认为是最佳实践。您可以使用指令来代替。

HTML代码

    <a>{{monthName}}</a>
    <select ng-model="month.val" ng-options="month.Id as month.Name for month in months track by month.Id"
        ng-change="GetValue()">
    </select>
month.val包含所选月份id

在选项选择时调用getValue函数

此函数根据$scope.months中的月份id查找月份名称。 试试这个。

HTML代码

    <a>{{monthName}}</a>
    <select ng-model="month.val" ng-options="month.Id as month.Name for month in months track by month.Id"
        ng-change="GetValue()">
    </select>
month.val包含所选月份id

在选项选择时调用getValue函数

此函数根据$scope.months中的月份id查找月份名称。 试试这个。

这是一个工作模式

HTML:

避免在控制器中使用jQuery。DOM操作应该在别处处理指令等。

这里是一个工作流程

HTML:

避免在控制器中使用jQuery。应该在别处处理DOM操作指令等。

使用$element-id.parents。元素面板:firstuse$element-id.parents。元素面板:first
<a class="select-label element-label" ng-model="label">{{selected.label}}</a>
<select id="element-id" ng-model="selected" ng-options="opt.label for opt in months">
$scope.months = [
    {id: '1', label: "January"},
    {id: '2', label: "February"},
    {id: '3', label: "December"}
];
$scope.selected = {label: 'Month'};