我正在使用ui-router,并且有这样的状态;
.state('add', {
url: '/add',
views: {
"list@home.main": {
templateUrl: 'add.html',
controller: "AddController",
controllerAs: 'ctrl'
}
}
})
在我的模板中我有这个;
<input type="text" ng-model="ctrl.product.title" name="title" required>
在我的控制器中,我想从输入字段中获取值。
myApp.controller('myController', function myController($scope, $rootScope, Incident, $state, $stateParams) {
var vm = this;
vm.product = new Product();
var myValue = vm.product.title;
});
但myValue总是空的。我错过了什么?
(Product()是;)
myApp.factory('Product', function ($resource) {
return $resource('http://api.com/api/products/:id', { id: '@id' }, {
update: {
method: 'PUT'
}
});
});
答案 0 :(得分:0)
如果您想从后端加载产品然后检查标题,您想要完成什么:
Product
是一种资源。您应该像Product.get({ id: 3 })
一样使用它来获取实际产品 - 产品将作为承诺返回,因此您可以使用product.$promise.then(...)
或仅将其分配给变量(angularjs将足够智能以从承诺中进行绑定) :
Product.get({id:123})
.$promise.then(function(product) {
$scope.product = product;
// product.title should be usable here
});
资源是一个复杂的主题,这里有一个教程:https://devdactic.com/improving-rest-with-ngresource/
如果您想在客户端阅读product.title,那么您太早了。
如果您使用form
,则使用ngSubmit
绑定提交事件,并在处理程序内读取product.title
值。如果您在控制器构造函数中访问该变量,则用户无法更改任何内容,因此它必须为空。如果您想要监控product.title
更改,请在输入或ng-change
上使用$watch(product.title, function() { })
指令,但我认为在您的情况下ng-submit
就足够了。