Если вы имеете в виду, у вас есть другой базовый URL. вы можете сделать что-то вроде этого:
public interface YourAPIInterface {
@GET
Call<POJO> doAllItems(@Url String url);
}
@Url
для параметра, чтобы позволить динамически указывать полное имя хоста. Тогда вы можете назвать это обычным способом в Refrofit
Это довольно легко сделать при обертывании всего этого в класс. Мы будем использовать метод считывания/методы установщика. Метод установщика диспетчеризирует и событие каждый раз, когда это называют.
(Примечание: Методы set и Методы считывания рассматривают как свойства). Вы просто присваиваете значение, в противоположность вызову метода (например, someVar = 5
вместо someVar(5);
Даже при том, что методы set / методы считывания являются функциями/методами, их рассматривают как свойства.
//The document class
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.EventDispatcher;
public Class TestDocClass extends Sprite
{
private var _model:Model;
public function TestDocClass():void
{
_model = new Model();
_model.addEventListener(Model.VALUE_CHANGED, onModelChanged);
}
private function onModelChanged(e:Event):void
{
trace('The value changed');
}
}
}
//The model that holds the data (variables, etc) and dispatches events. Save in same folder as DOC Class;
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class Model extends EventDispatcher
{
public static const VALUE_CHANGED:String = 'value_changed';
private var _someVar:someVarType;
public function Model():void
{
trace('The model was instantiated.');
}
public function set someVariable(newVal:someVarType):void
{
_someVar = newVal;
this.dispatchEvent(new Event(Model.VALUE_CHANGED));
}
}
}
@BrianHodge: Как вы на самом деле используете твой пример? Как вы вызываете функцию set? Как вы относитесь к этому? Куда передать переменную, которая будет изменена? ..
Скажем, если я хочу изменить переменную в обертке, например, нажатием кнопки.
Я должен признаться, что я пробовал некоторые другие коды и примеры (getter / setter) типа, с dispatchEvent
или без, и я не могу преодолеть это! Но ваш пример, кажется, именно то, что мне нужно, просто не могу заставить его работать.
Я получаю Модель была создана
, когда я установил функцию в качестве класса документа. Вот и все.
Наконец-то я узнал о таких людях, как я, которые теряют время из-за этой отправки!
In my case the _someVar
variable has to be data typed as a String
(same thing for fornewVal
).
OnceTestDocClass
is set as your document class; you refer to the Model instantiated like this:
_model.someVariable="new stuff";
I was trying to change the value like this:
_model.someVariable("new stuff");
You can add some trace actions in the Model
class to have a clear demo in the output panel:
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
public class Model extends EventDispatcher
{
public static const VALUE_CHANGED:String = 'value_changed';
private var _someVar:String = "default";
public function Model():void
{
trace('The model was instantiated.');
}
public function set someVariable(newVal:String):void
{
trace ("before " + _someVar);
_someVar = newVal;
trace ("after " + _someVar);
this.dispatchEvent(new Event(Model.VALUE_CHANGED));
}
}
}
It's not much, but these things can cost some people a whole lot of time =)
Вы раньше могли сделать что-то подобное в AS2 с помощью Object.watch. Я не вижу прямой эквивалент, но он похож на mx.binding.utils. ChangeWatcher даст Вам схожую функциональность для любых переменных, которые связываемы.
Я не знаю о способе сделать это в AS3 для несвязываемых переменных, но если переменная, которую Вы хотите наблюдать, связываема (или если можно изменить его, чтобы быть binadable), затем, ChangeWatcher мог бы дать Вам, что Вы хотите.