如何在javascript中填充Angularjs$scope变量
How to populate Angularjs $scope variable in javascript?
mapApp.controller("myController", function ($scope,$http) {
$scope.namePlaceHolder= "Name";
$scope.name = "";
};
我将范围变量绑定到 html 输入,如下所示。
<input id="foo" type="text" placeholder="{{namePlaceHolder}}" ng-model="name" value="{{name}}"/>
如果用户在文本框中键入内容,则 $scope.name 属性会更改。但是当我使用 javascript 更改它时,$scope.name 数据不会改变。
on(document.getElementById("button"), "click", function (e) {
document.getElementById("foo").value = "ascd...";
})
此代码不会填充 $scope.name 数据。
从外部元素访问范围:
on(document.getElementById("button"), "click", function (e) {
var scope = angular.element(document.getElementById("foo")).scope();
scope.name = "hello, World!";
})
从外部元素访问和应用作用域:
.JS:
on(document.getElementById("button"), "click", function (e) {
var scope = angular.element(document.getElementById("foo")).scope();
scope.name = "hello, World!";
scope.$apply();
})
除了其他多件事。在这里,原型继承启动,它确实覆盖了$scope
对象上的namePlaceholder
属性,因为您的<form ...>
确实会创建一个从控制器继承的新$scope
。因此,您应该始终"使用点"。
例如
$scope.placeHolders = {
name: "something"
};
然后
<input placeholder="{{placeholders.name}}">
另一件事是,您在操作角度之外的角度变量时"离开"了角度词,因此必须调用angular.element(document.getElementById("foo")).scope().$apply(...)
从您自己的 JS "返回"角度世界中。
但更好的解决方案
mapApp.controller("myController", function ($scope,$http) {
$scope.placeHolders = {
name: 'Name'
};
$scope.selected = {
name: ''
};
$scope.click = function() {
$scope.selected.name = "something ...";
};
};
<input ng-model="selected.name" placeholder="{{ placeHolders.name }}" ...>
<button ng-click="click()"></button>
Angular 内部的 DOM 操作应该始终来自指令 - 这允许代码的干净分离。在您的情况下,您永远不会更改该输入的 value
属性,您将修改ng-model
以便更改将反映在 $scope
变量中。
因此,在上述 ID button
元素中,使用ng-click
ng-click="changeValue()"
//In controller
$scope.changeValue = function() {
$scope.name = "ascd...";
}
相关文章:
- AngularJS:$scope$注意两个相互依赖的值
- AngularJS: $scope is not defined?
- Angularjs$scope让我很困惑
- 为什么AngularJS$scope.watch()在我告诉它监视数组时会停止工作
- Angularjs$scope和此函数
- 如何在javascript中填充Angularjs$scope变量
- AngularJS Scope.on和Scope.emit在筛选器中的调用顺序
- AngularJS$scope在指令中编译控制器时未定义
- AngularJS-$scope不绑定到DOM
- AngularJS $scope.variable 是未定义的
- AngularJs $scope在离子项目中是未定义的
- 在 angularjs $scope中获取数据,同时从 django 获取数据
- AngularJS:$scope.$on 和 document.addEventListener 之间的差异
- Angularjs $scope - 如何通过控制器获得正确的一个(初学者)
- AngularJS$scope点击时不会更新
- AngularJS$scope更改不更新视图
- AngularJS:$scope.$watch 不会更新从自定义指令$resource获取的值
- AngularJS$scope原型继承 - 原始与对象
- AngularJS$scope继承服务
- AngularJS$scope更新,而不是视图