如何从Chrome扩展程序触发淘汰视图模型更改?

时间:2017-12-11 13:47:42

标签: javascript knockout.js google-chrome-extension

我正在尝试编写一个chrome扩展,它将更改以下输入元素的值并触发将更改页面上其他值的模型更改:

<input type="text"  
  data-bind="value: trade.buyVolume, attr: { readonly: trade.buyMaxEnabled() }" 
  value="0" 
  name="quantity_Buy"
>

我可以使用以下行在Chrome控制台中实现此目的:

$('#form_Buy > div:nth-child(1) > div > div > input').prop('value', 6).trigger('change');

但是,当我从Chrome扩展程序运行相同的行时,它会更改输入的值,但不会更改视图模型的值,也不会触发其他页面更改。

我知道我需要更改视图模型值trade.buyVolume,但无法从Chrome控制台访问它。

如何更改视图模型值?

1 个答案:

答案 0 :(得分:2)

  

如何更改视图模型值?

通过更改视图模型值。

ko.contextFor(domElement)

不要在淘汰赛应用程序中修改DOM。始终修改viewmodel,仅修改viewmodel。

您可以使用BEGIN DECLARE @string varchar(100) = 'asdsadsd asdad asd' DECLARE @ResultString varchar(200) = '' DECLARE @index int = 1 DECLARE @flag bit = 0 DECLARE @temp varchar(2) = '' WHILE (@Index <LEN(@string)+1) BEGIN SET @temp = SUBSTRING(@string, @Index-1, 1) --select @temp IF @temp = ' ' OR @index = 1 BEGIN SET @ResultString = @ResultString + UPPER(SUBSTRING(@string, @Index, 1)) END ELSE BEGIN SET @ResultString = @ResultString + LOWER(SUBSTRING(@string, @Index, 1)) END SET @Index = @Index+ 1--increase the index END SELECT @ResultString 检索元素的绑定上下文。 viewmodel是绑定上下文的一部分。请参阅:http://knockoutjs.com/documentation/unobtrusive-event-handling.html