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