这是不应该做的事吗?因为我无法让它发挥作用。
在我的控制器中我有
$scope.test = "someValue"
在我看来
<input ng-model="test" />
我期待发生什么
<input ng-model="someValue" />
但是,ng-model保持设置为“test”。
如何解决此问题?
答案 0 :(得分:3)
这不是ng-model
的工作方式。如果您有一个范围变量,就像您的情况test
一样,此变量的值将反映在input
的value属性中。这意味着someValue
中将显示input
。换句话说:ng-model
是一个绑定到的指令,例如使用NgModelController
对作用域上的属性进行输入,选择,textarea(或自定义表单控件)。
NgModelController为ngModel指令提供API。该 controller包含数据绑定,验证和CSS的服务 更新,值格式化和解析
以下是一个例子:
var app = angular.module('myApp', []);
app.controller('TestController', TestController);
function TestController() {
var vm = this;
vm.myModel = "This is the model value";
vm.selectedOption = undefined;
vm.options = [{
id: '1',
name: 'Option A'
}, {
id: '2',
name: 'Option B'
}, {
id: '3',
name: 'Option C'
}];
};
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<body ng-app="myApp" ng-controller="TestController as vm">
<input type="text" ng-model="vm.myModel" />
<select name="mySelect" id="mySelect" ng-model="vm.selectedOption">
<option ng-repeat="option in vm.options" value="{{option.id}}">{{ option.name }}</option>
</select>
<pre ng-if="vm.selectedOption">Selected Option: {{ vm.selectedOption }}</pre>
</body>
&#13;
上面的示例还显示了一些最佳实践,意味着对您的视图使用controllerAs
语法,并明确声明控制器签名。
答案 1 :(得分:0)
显示您的控制器代码。但是,我在下面已经证明它应该可以工作。
angular.module('myApp', []);
angular.module('myApp').controller('myCtrl', function($scope) {
$scope.test = "somevalue";
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myApp">
<form ng-controller="myCtrl">
<input type="text" ng-model="test" />
</form>
</body>
&#13;
ng-model
只表示绑定对象。它不会改变。 value
有哪些更改,它对应于ng-model
对象所采用的值。